0
通過嘗試重寫我發生在這個奇怪的行爲的函數。我希望能夠在搜索並閱讀了函數聲明方法而沒有成功之後找到答案。Javascript函數聲明 - 不同的行爲?
在腳本中,如果我聲明這
var someFunction = function(){
alert("a");
}
someFunction();
someFunction = function(){
alert("b");
}
通過調用someFunction
我將有"a"
輸出,但如果我這樣
function someFunction(){
alert("a");
}
someFunction();
function someFunction(){
alert("b");
}
聲明的兩個函數我的輸出將是"b"
這裏有什麼區別?我明白第一個例子是賦予變量一個匿名函數。但第二個例子對我來說是完全意想不到的。
我在所有瀏覽器上測試過,輸出結果是一樣的。
我明白第一個例子,但爲什麼第二個是這樣的? – Jonathan
嘗試給http://stackoverflow.com/a/336868/3604087閱讀 – Ian
@Jonathan因爲你在全局範圍內聲明你的函數。你可以在你的.js文件的末尾編寫你的函數,但仍然可以在第一行調用它。在「someFunction」的第二次聲明之後,您將覆蓋第一個。 – swdev95