以下代码
console.log("1",eval(undefined));
console.log("2",eval(window.UndefVar));
console.log("3",eval(UndefVar));
产生以下输出
1 undefined
2 undefined
UndefVar is not defined
也许IDK有一些内部工作,但只抛出未定义的变量并忽略属性& undefined本身看起来很奇怪,尽管它在FF& Chrome,这让我认为它以某种方式设置了规范。
答案 0 :(得分:3)
undefined
是一个值为undefined的名称。 window
是一个对象,您可以动态地为对象指定名称,但尝试访问未设置的对象,将返回undefined。此外,名称UndefVar
未定义,因此在调用eval之前将抛出ReferenceError
,因为它必须首先评估参数。