<script>
function foo(){
function bar() {
return 3;
}
return bar();
function bar() {
return 8;
}
}
alert(foo());
</script>
问题:
结果显示:8,为什么不是3,当脚本运行到此行时:return bar();
它应该跳出function foo(){}
并且不会到达它下面的行,这是
function bar() {
return 8;
}
正确?
答案 0 :(得分:2)
这些函数定义是hoisted,也就是说,它们以源顺序出现,只有它们的行为类似于它们被定义在它们所定义的范围的顶部。
知道了这一点之后,你可以告诉第二个clobbers第一个定义。