내가 구글 크롬에서이 테스트를하고의 지역 변수에 액세스 할 수 있습니다 이게 효과가 있니?자바 스크립트 이유는 기능
편집 :
내가 VAR없이 변수를 사용하는 것이 글로벌하게하는 원래의 질문의 정답 어디에서나 찾을 수 없기 때문에 이것은, 중복되지 않으며,이 암시 globals`
의 공포 '로 암시 적으로 언급내가 구글 크롬에서이 테스트를하고의 지역 변수에 액세스 할 수 있습니다 이게 효과가 있니?자바 스크립트 이유는 기능
편집 :
내가 VAR없이 변수를 사용하는 것이 글로벌하게하는 원래의 질문의 정답 어디에서나 찾을 수 없기 때문에 이것은, 중복되지 않으며,이 암시 globals`
의 공포 '로 암시 적으로 언급실제로 변수를 선언 한 적이 없으므로 로컬 변수가 아닙니다. 대신, 그것은 암시 적 글로벌입니다.
오류를 만들려면 항상 'use strict';
을 사용해야합니다. 당신이 다음 변수 D에 값 2를 할당하기 위해 자바 스크립트 컴파일러를 말하고있다 d = 2
을 쓸 때
window.d = 2;
로 선언 된 적이이 변수는, 자동으로 같이 선언됩니다. 함수 테스트는 변수 d가 정의되어 있는지 여부를 로컬 범위에서 찾을 것이고 선언되지 않았기 때문에 실패 할 것입니다. 따라서 테스트 함수는 변수가 선언되었지만 부모 범위가 변수 d를 선언하지 않은 경우 부모 범위를 묻습니다. 그런 다음 테스트 함수의 부모 범위가 전역 범위에 d를 선언했는지 여부를 묻고 전역 범위에서 변수 d가 없다는 것을 알게되면 d라는 변수를 생성하고이를 반환합니다. 변수 d는 컴파일러에 의해 전역 적으로 선언되므로 test2에서 변수 d에 액세스 할 수 있습니다.
:
유일한 장소 d가 정의되어 있으면 로컬이 아닙니다. 당신은'var d = 2; '그것이 지역 변수가되기 위해서. 당신의 정의에 따르면, 그것은 세계적입니다. – Snowmonkey
왜냐하면 하나는'var'을 사용해야하기 때문입니다 .... – epascarello
@baao 복제본에서 내 대답을 찾을 수 없으므로 중복되지 않습니다. 확인하십시오. – ammcom