Javascript函数声明 - 不同的行为?

时间:2017-05-04 10:20:44

标签: javascript

通过尝试覆盖我在这种奇怪行为中发生的函数。我希望在搜索并阅读有关函数声明方法后找不到答案。

在脚本中,如果我声明了这个

var someFunction = function(){
    alert("a");
}

someFunction();

someFunction = function(){
    alert("b");
}

通过致电someFunction,我的输出为"a"

但是如果我以这种方式声明这两个函数

function someFunction(){
    alert("a");
}

someFunction();

function someFunction(){
    alert("b");
}

我的输出将为"b"

这有什么区别?我理解第一个例子是为变量赋一个匿名函数。但第二个例子对我来说是完全出乎意料的。

我在所有浏览器上测试过,输出结果相同。

1 个答案:

答案 0 :(得分:0)

不同之处在于您在第一个示例中调用匿名函数,Javascript从上到下进行评估。在匿名函数的情况下,它实际上并未执行,直到稍后调用它。