- 프로퍼티보다는 지역 변수를 사용하는 것이 좋습니다.
- 최대한 좁은 스코프를 갖게 변수를 사용합니다. 예를 들어 반복문 내부에서만 변수가 사용된다면, 변수를 반복문 내부에 작성하는 것이 좋습니다.
- 변수의 스코프 범위가 너무 넓으면, 다른 개발자에 의해서 변수가 잘못 사용될 수 있습니다.
- 변수는 읽기 전용 또는 읽고 쓰기 전용 여부와 상관 없이, 변수를 정의할 때초기화되는 것이 좋습니다. if, when, try-catch, Elvis 표현식 등을 활용하면, 최대한 변수를 정의할 때 초기화할 수 있습니다.
- 여러 프로퍼티를 한꺼번에 설정해야 하는 경우에는 구조분해 선언(destructuring declaration)을 활용하는 것이 좋습니다.
- 이러한 결과가 나온 이유는 prime 이라는 변수를 캡처했기 때문입니다. 반복문 내부에서 filter 를 활용해서 prime 으로 나눌 수 있는 숫자를 필터링합니다.
- 그런데 시퀀스를 활용하므로 필터링이 지연됩니다. 따라서 최종적인 prime 값으로만 필터링된 것입니다. prime 이 2로 설정되어 있을 때 필터링된 4를 제외 하면, drop 만 동작하므로 그냥 연속된 숫자가 나와 버립니다.
- 여러 가지 이유로 변수의 스코프는 좁게 만들어서 활용하는 것이 좋습니다. 또한 var 보다는 val 을 사용하는 것이 좋습니다. 람다에서 변수를 캡처한다는 것을 꼭 기억하세요.