ES6에 대한 Babel의 가이드 는 다음과 같이 말합니다.
let
새로운 것var
입니다.
명백하게 유일한 차이점이다 var
현재 범위에 도착 기능 하면서, let
현재의 범위에 도착 블록 . 이 답변 에는 좋은 예가 있습니다.
var
ES6 코드에서 사용해야 할 이유가 없습니다 . 주어진 변수를 전체 함수로 범위를 지정하려는 경우에도 let
함수 블록의 맨 위에 선언을 넣어 var
실제 범위를 나타 내기 위해 수행해야합니다 . 그리고 for
블록이나 무언가 에서 더 세밀하게 범위 를 지정하려면 그렇게 할 수 있습니다.
그래서 내 본능은 var
ES6 코드를 작성할 때 완전히 사용을 중지하는 것 입니다.
내 질문은, 이것에 대해 잘못입니까? var
보다 바람직한 합법적 인 사례가 let
있습니까?
let
함수 상단에 문장 을 넣으면 전체 함수에 범위를 지정하려는 것이 분명합니다. 나는 var
그것을 사용 하는 것이 단순히 상단에있는 것보다 더 명확 하다고 생각하지 않습니다 .
var
여전히 존재 하는 유일한 이유 는 이전 버전과의 호환성 이라고 믿습니다 . 그것이 아니라면, 그들은 var
완전히 제거 되었거나 let
처음부터 소개되지 var
않았을 것입니다.
var
는 나에게는 얇아 보이지만, 제 3의 종류의 변수가 있다는 것을 보증하기에는 충분하지 않습니다. a let
를 함수의 상단에 배치하여 간단히 전체 함수로 범위를 지정할 수 있습니다 var
. 블록에서 쓰는 것보다 의도가 훨씬 명확 합니다 (블록에서 들어 올리면 블록 외부에서 사용할 수 있습니다) -이상하다). 그는 a let
를 함수로 범위 를 지정하면 "구문이 아니라 차이점을 나타내는 위치에 불과하다" 고 경고 하지만, 이것이 좋은 것이라고 생각합니다.
var
. 그가 유지하기 위해 제시 한 예는 생각 var
이 많이 들었으며 심각한 코딩 오류를 기반으로 합니다. 오류가 발생하여 문제를 해결할 수있는 언어 기능을 사용하는 것보다 오류가 발생하여 해당 오류를 수정하는 것이 훨씬 좋습니다! 다음으로 충돌을 막기 위해 try / catch로 모든 것을 포장해야합니까? 그 링크의 나머지 부분은 훌륭하지만 그 특정 부분에 전혀 동의하지 않습니다.
var
이 변수가 전체 기능에 적용되도록 의도 된 지표로 사용 하는 것이 유용한 "자체 문서화"규칙 일 수 있습니다. .