js中函数运行过程的问题

时间:2013-06-19 05:44:00

标签: javascript

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

正确?

1 个答案:

答案 0 :(得分:2)

这些函数定义是hoisted,也就是说,它们以源顺序出现,只有它们的行为类似于它们被定义在它们所定义的范围的顶部。

知道了这一点之后,你可以告诉第二个clobbers第一个定义。