我對Javascript中變量提升有疑問。Javascript變量提升示例
考慮下面的例子;
var myName = "Richard"; // Variable assignment (initialization)
function myName() {
console.log ("Rich");
}
console.log(typeof myName); // string
其實我困惑,爲什麼typeof myName
返回爲字符串。
根據我的理解,這個例子將按照如下進行;
- 首先,函數聲明(
function myName()
)會得到提升到頂部,然後 - JS解釋會讀取線
var myName = "Richard"
(因爲函數聲明越過變量聲明優先)。但是,由於已經有一個名爲「myName」的屬性,因此該語句將被忽略。
因此typeof myName
應該得到返回功能(而不是字符串)
請讓我知道我的理解是不正確。
您從一個函數聲明更改爲函數表達式在您的示例中,並且 - 不幸的是 - 它們被JavaScript區別對待:在加載函數聲明時掃描文件,函數表達式及其賦值在運行時得到解決。因此,不幸的是你的例子解釋了一些事情,但沒有解釋問題。 – 2014-11-04 10:38:50
@GoloRoden - 我已經解釋了爲什麼'myName'變量的類型是'string'而不是'function',接下來我做了一個例子,其中變量的類型是'function' ;-) – 2014-11-04 13:20:06