2
<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;
}

对?

4

1 回答 1

2

这些函数定义被提升了,也就是说,它们以源顺序出现,只是它们的行为就像它们都被拉到了它们定义的范围的顶部。

知道这一点后,您可以告诉第二个破坏第一个的定义。

于 2013-06-19T05:46:04.113 回答