<html>
<head>
</head>
<body>
<script>
function wow(){
alert(1);
}
wow();
function wow(){
alert(2);
}
wow();
</script>
</body>
</html>
这是我的代码,我预计它会提示1和2,但相反,它会再次提醒2然后再提高2,为什么????
答案 0 :(得分:6)
函数声明已悬挂。放置它们*
的位置并不重要:它们先于其他任何处理。
另一方面,函数表达式不会被提升。
var wow;
wow = function (){ alert(1); };
wow();
wow = function (){ alert(2); };
wow();
它们出现在范围(父函数或全局)中的 *
。
答案 1 :(得分:0)
这是您声明函数的效果。在使用它们的代码之前,首先评估所有函数声明。
您可以通过将函数声明为函数表达式来获得预期效果:
<html>
<head>
</head>
<body>
<script>
var wow = function (){
alert(1);
}
wow();
wow = function (){
alert(2);
}
wow();
</script>
</body>
</html>
答案 2 :(得分:-1)
因为函数声明在运行任何执行上下文之前可用。