1
나는이 할 경우객체의 값을 반환
var x = eval('{a:"b"});
console.log(x); // -> "b"
내가 할 모든 객체 ("B")의 값이 아닌 키/재산, 또는 이상한 전체 개체 자체. 나는이 수행 할 때
하지만 지금
var x = eval('(function self(){return {a:"b"}})()');
console.log('x'); // -> {a:'b'}
그것을 내가, 전체 객체를 기대하는 걸 줄 것으로 보인다. 근데 왜 이래? 왜 (자체 실행) 함수로 포장해야합니까?
문자열에서 일부 개체를 만들 때 eval을 사용하려고 생각하지만 더 잘 이해해야합니다. 있는 그대로 {a:"b"}
문은 다음과 같은 나타 내기 때문에
JS 사양에서 {}을 (를) '코드 블록'으로 정의하지만 일반 JS 코드에서는 거의 볼 수 없다고 생각합니다. "코드 블록"은 어떻게 생겼습니까? 일반적으로 코드 블록은 함수의 컨텍스트에만 있습니다. –
@AlexanderMills 블록을 항상 봅니다. if (true) {...} - 여기 코드 블록이 있습니다. 많은 것들이 하나의 구문을 "피연산자"로 받아들입니다. 블록이 여러 문장의 "컨테이너"역할을합니다. – zerkms
@AlexanderMills : 희귀 한 코드 블록이 아니라 if, for, while 등에서 코드 블록을 사용합니다. 거의 사용되지 않고 거의 사용되지 않는 레이블입니다 – slebetman