当我在javascript中覆盖它时,为什么第一个函数不起作用

时间:2014-02-22 07:59:57

标签: javascript

<html>
    <head>
    </head>
    <body>
        <script>
            function wow(){
               alert(1);
            }
            wow();

            function wow(){
                alert(2);
            }
            wow();
        </script>
    </body>
</html>

这是我的代码,我预计它会提示1和2,但相反,它会再次提醒2然后再提高2,为什么????

3 个答案:

答案 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)

因为函数声明在运行任何执行上下文之前可用。