반 친구들에게 물어보니 먼저 개념을 이해해야 합니다. 1.js에서는 변수 선언과 함수 선언이 미리 만들어지는데, 변수 선언보다 함수 선언이 더 좋습니다. 따라서 선언하기 전에 경고(a)는 오류를 보고하지 않습니다. 또한 첫 번째 경고에는 변수 a가 아닌 함수 a가 나타납니다. 2. 두 번째 경고는 말할 필요도 없이 a 함수를 실행합니다. 3. 세 번째 경고는 여기에서 실행되기 전에 var a=3;가 실행되었기 때문에 결과는 3입니다. 따라서 a는 3이 됩니다. var a=3;。所以a变成了3。 4.最后报错是因为,执行到a();a进行了两次赋值,第一次是var a=3;,第二次是a=6;4. a(); a가 두 번 할당되었기 때문에 마지막 오류가 보고되었습니다. 첫 번째는 var a=3;이고 두 번째는 a=6; 그러나 어쨌든 a는 함수가 아니므로 오류가 보고됩니다.
첫 번째 출력function 是因为作用域提升(hoisting)。 第二个输出 10 是第二行 a() 的输出。 第三个输出 3 是倒数第三行 alert(a) 的输出。 最后一个报错是来自最后一行 a()。因为这时候 a 被重新赋值为数字 6,已经不是 function 了。执行 a()에서는 물론 오류가 보고됩니다.
반 친구들에게 물어보니 먼저 개념을 이해해야 합니다.
1.js에서는 변수 선언과 함수 선언이 미리 만들어지는데, 변수 선언보다 함수 선언이 더 좋습니다. 따라서 선언하기 전에 경고(a)는 오류를 보고하지 않습니다. 또한 첫 번째 경고에는 변수 a가 아닌 함수 a가 나타납니다.
2. 두 번째 경고는 말할 필요도 없이 a 함수를 실행합니다.
3. 세 번째 경고는 여기에서 실행되기 전에
var a=3;
가 실행되었기 때문에 결과는 3입니다. 따라서 a는 3이 됩니다.var a=3;
。所以a变成了3。4.最后报错是因为,执行到a();a进行了两次赋值,第一次是
var a=3;
,第二次是a=6;
4. a(); a가 두 번 할당되었기 때문에 마지막 오류가 보고되었습니다. 첫 번째는var a=3;
이고 두 번째는a=6; 그러나 어쨌든 a는 함수가 아니므로 오류가 보고됩니다.
첫 번째 출력
function
是因为作用域提升(hoisting)。第二个输出 10 是第二行
a()
的输出。第三个输出 3 是倒数第三行
alert(a)
的输出。最后一个报错是来自最后一行
a()
。因为这时候a
被重新赋值为数字6
,已经不是function
了。执行a()
에서는 물론 오류가 보고됩니다.변수 선언이 승격되나요? 다음 규칙만 기억하세요.
http://zonxin.github.io/post/...