JavaScript 變數名和函式名相同

antzone發表於2017-04-10

本章節介紹一下JavaScript中,變數名和函式名衝突時如何處理。

首先看一段程式碼例項:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
console.log(typeof fn)
function fn() {
  //code
}
var fn

上面的程式碼的輸出值是"function"而不是undefined。

說明變數宣告並沒有覆蓋掉函式宣告,下面進行一下說明。

函式宣告優先順序要高於變數的宣告,但變數賦值以後,就會覆蓋之前宣告的函式。

[JavaScript] 純文字檢視 複製程式碼執行程式碼
function fn() {
  //code
}
var fn;
fn = 5;
console.log(typeof fn)

上面程式碼的輸出值"number",因為上面的變數被賦值為5。

如果console.log()放在程式碼起始位置,輸出值依然是"function",因為變數和函式宣告都會被提升(這時候還沒有執行賦值語句)。

相關文章