2017-04-03 8 views
2

var을 사용하여 변수를 정의하려고하면 모든 것이 작동합니다.eval()을 사용하여 const 변수를 정의하십시오.

const로 정의하는 것은 예상대로 작동하지 않으며 변수는 정의되지 않습니다.

window.eval("var v = 5;"); 
 
document.body.innerHTML += window.v === undefined; 
 

 
window.eval("const l = 5;"); 
 
document.body.innerHTML += window.l === undefined;

나는 크롬과 Node.js.에 테스트 한 내가 놓친 게 있니?

미리 감사드립니다.

답변

5

const은 기본적으로 엄격 모드를 설정하기 때문입니다.

window.eval("'use strict'; var v = 5;"); 
 
document.body.innerHTML += window.v === undefined; 
 

 
window.eval("'use strict'; const l = 5;"); 
 
document.body.innerHTML += window.l === undefined;

엄격한 모드에 대한 자세한 정보를 참조 :

명시 적으로 두 예제에 대해 엄격 모드를 켤 때 발생하는 참조 특히이 부분 :

둘째, 엄격 모드 코드의 평가는 새로운 변수를 주변 범위에 도입하지 않습니다. 일반 코드 eval ("var x;")는 변수 x를 주변 함수 또는 전역 범위에 도입합니다. 즉, 일반적으로 인수 또는 로컬 변수를 참조하지 않는 모든 이름의 eval 호출을 포함하는 함수에서 은 런타임시 특정 정의에 매핑되어야합니다 (해당 평가에 의해 새 변수가 외부 변수). 엄격한 모드 평가에서 은 평가중인 코드 변수를 작성하므로 평가는 이름은 외부 변수 또는가 [강조 첨가 일부 로컬 변수

보기이 문서를 의미하는지 여부에 영향을 미칠 수 없다 :

+0

아, 그건 의미가 있습니다. 고맙습니다! 나는 당신의 대답을 몇 분 안에 받아 들일 것이다. :) – jooas