为什么eval()会抛出未定义的变量?

时间:2016-07-26 00:54:58

标签: javascript undefined eval

以下代码

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,这让我认为它以某种方式设置了规范。

1 个答案:

答案 0 :(得分:3)

undefined是一个值为undefined的名称。 window是一个对象,您可以动态地为对象指定名称,但尝试访问未设置的对象,将返回undefined。此外,名称UndefVar未定义,因此在调用eval之前将抛出ReferenceError,因为它必须首先评估参数。