2016-09-08 6 views
6

나는 이상한 행동을 설명하기 위해 애니메이션 GIF를 첨부했습니다. 본질적으로 내 질문은 동일한 범위에서 사용할 때 크롬 콘솔이 varlet을 다르게 취급합니까? 변수를 선언/할당 한 후 해당 변수의 이름을 콘솔에 입력하면 Chrome이 자동 완성하여 입력 내용을 포함하는 드롭 다운 목록을 표시합니다. let을 사용할 경우에는 그렇지 않습니다. 이 버그, 기능입니까? 아니면 JavaScript에 varlet이 누락 되었습니까?Chrome 콘솔 : 'let'과 'var'의 차이점은 무엇입니까?

참고 : let의 생명 인 &이 즉각적인 범위 내에서 사망 함을 잘 알고 있습니다. let는 로컬 영역에서 정의하면서

enter image description here

+3

크롬 개발 팀의 일원이 아니 어서 a) 자동 완성에서 전역 범위 변수 만 찾거나 b) 아직 let에 대해 구현하지 않아도된다거나 c) 그것을 구현하는 것을 잊었습니다 – baao

+3

그냥 호기심에서 어떻게 그 gif 이미지를 만들었습니까? –

+0

@OrkhanAlikhanov yeeeees. 그것은 질문의 가장 흥미로운 부분입니다 !!! – baao

답변

9

var을 콘솔에 사용하면 전역 범위에서 실행되고 변수가 window 개체에 추가됩니다.

let을 콘솔에 사용하면 window 개체에 변수를 추가하지 않는 전역 범위에서 실행됩니다.

타이핑을 시작할 때 자동 완성은 부모 개체가 function, forwhile과 같은 다른 언어 구문과 함께 완료 될 수 있는지 확인합니다.

콘솔에 아무런 내용이없는, 부모 객체는 letwindow에 속성을 추가하지 않기 때문에 찾고있는 속성이되지 않습니다 window입니다.

자동 완성을 완료 할 새 개체가 생기 자마자 예상대로 동작합니다. 그렇게 말한다면 모두와 지금


> let foo = {bar: 'baz'}; 
> foo.b //autocompletes bar 

는 자동 완성 그런 식으로 행동하는을 가지고 이유가 없다. 많은면에서 let을 통해 전역 범위에 정의 된 변수에 대한 자동 완성 기능의 부족은 "수정"할 가치가있는 "버그"로 간주 될 수 있습니다. 제 생각에는 적당히 놀라운 행동입니다.

1

var는 전역에 변수를 정의한다. 대부분의 경우 자동 완료 기능은 대상의 전역 범위 만 조사합니다.

+0

모두 논리적입니다. 하지만 이제 2017 년 말과 크롬은'let' 변수를 자동 완성하지 않습니다 (Firefox는 그것을했습니다.) 크롬에서'let' 변수에 대한 자동 완성을 얻을 수있는 방법에 대한 정보를 알고 계십니까? –