【发布时间】:2014-12-05 03:17:21
【问题描述】:
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 初始化为“我的值”。
【问题讨论】:
-
你的代码示例有两个同名的变量,一个是函数本地的,一个是被记录的。
-
忘掉“提升”这个词吧,它会分散注意力。在执行任何代码之前处理变量和函数声明。 然而,初始化发生在执行过程中。因此,虽然变量从一开始就存在,但在赋值执行之前它不会被赋值。
标签: javascript variables scope