我最近犯了一个很愚蠢的bug:
"use strict";
function doSomething() {
let testObject = {a: "foo", b: "bar", parent: "bla"};
if (parent in testObject) {
console.log("has a parent")
}
else {
console.log("does not have a parent")
}
}
doSomething();
由于缺少对文字字面量
parent
的引号,解释器访问了window.parent
,与当我写a in testObject
时会出现的ReferenceError不同,并没有引发错误。 很明显,JavaScript无法知道我的意图不是访问window.parent
,因此也就无法引发错误。但我想知道是否有一种调试模式,可以在这种情况下向控制台输出警告,例如:parent
在此作用域中未定义,正在访问全局变量。
parent
为未定义。 - Philipp Imhof++
操作都视为像引用全局变量一样糟糕的错误。 - VLAZ