JavaScript指南中有一個關於變量範圍的語句:「JavaScript中的變量在某種意義上被」懸掛「或被提升到函數或語句的頂部,但變量不是初始化還會返回一個未定義的值。「JavaScript變量範圍返回「未定義」
/**
* Example 2
*/
// will return a value of undefined
var myvar = "my value";
(function() {
console.log(myvar); // undefined
var myvar = "local value";
})();
我的問題是:爲什麼「console.log(myvar);」會返回undefined?我認爲第一行已經初始化了myvar這個值是「我的價值」。
你的代碼示例具有相同名稱的兩個變量,一個本地的函數初始化MYVAR之前,那是被記錄的一個。 – nnnnnn 2014-10-10 02:52:45
忘記術語「提升」,這是一個分心。在執行任何代碼之前處理變量和函數聲明。 **然而**,初始化在執行過程中發生。因此,儘管變量從一開始就存在,但在賦值執行之前它不會被賦值。 – RobG 2014-10-10 03:05:47