【发布时间】:2016-02-24 12:15:51
【问题描述】:
我对 JavaScript 作用域有一定的了解——该语言具有函数级作用域,并且变量和函数声明被提升到其包含作用域的顶部。但是,我无法弄清楚为什么以下两段代码记录了不同的值:
这会将值 1 记录到控制台:
var a = 1;
function b() {
a = 10;
return;
function a() {}
}
b();
console.log(a);
神秘的是,这记录了 10:
var a = 1;
function b() {
a = 10;
return;
}
b();
console.log(a);
那么引擎盖下面发生了什么?
【问题讨论】:
-
'use strict' 将不允许像第一个示例中那样声明函数,因此一开始可能是一个非常糟糕的主意。
-
很有趣,但它更像是一个设计问题。
标签: javascript scope