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