有人可以向我解释为什么我可以访问" m"在以下场景的全局范围内:
const a = {m: 'beeb'};
const magic = function topLevel () {
function lowerLevel() {
if ({m} = a ) {
console.log('in lowerLevel-func: ', m);
}
}
lowerLevel();
}
magic();
console.log('in global', m);
这里是JSFiddle
编辑:只是为了澄清,我没有在任何地方使用它,我只是想知道它是如何可能的。现在我知道了,谢谢!
答案 0 :(得分:1)
您观察到此行为是因为您正在对以前未声明的变量和进行分配,而您正在非严格模式下执行代码。
该行:
if ({m} = a ) {
实际上是将变量m
的{{1}}字段分配给变量a
。现在因为m
之前没有声明过,也没有在全局范围内存在,所以会发生两件事:
m
的分配,使其在全球范围内可用