在javascript中声明窗口属性,其值为undefined

时间:2014-02-12 12:21:01

标签: javascript

当我遇到这个问题时,我试图声明一个窗口属性。 以下两个代码片段之间有什么区别?

<script>
    window.prop=undefined;
    alert(window.prop);//undefined
    alert(prop);//undefined
</script>

<script>
    window.prop;
    alert(window.prop);//undefined
    alert(prop);//ReferenceError: prop is not defined
</script>

根据我的理解,他们正在做同样的事情。

3 个答案:

答案 0 :(得分:1)

使用window.prop=undefined;,您实际上在窗口对象上声明变量。

window.prop;只返回值。

示例:

a = {};
a.prop = undefined;
console.log(a); // Object {prop: undefined}
a = {};
a.prop;
console.log(a); // Object {}

在第一个示例中,prop实际上存在a(或window,在您的情况下),这意味着它可以被记录。
在第二个例子中,它不存在。访问普通对象时,a.prop只返回undefined。但是,当对象为window时,在访问window上的未定义变量时会引发引用错误。

答案 1 :(得分:0)

在第一个示例中,定义了window.prop,并为其分配了值undefined

但是,在第二个示例中,window.prop属性为undefined,这意味着它不存在,然后JavaScript会抛出ReferenceError

MDN上的

This article描述了JavaScript中的undefined值。

答案 2 :(得分:0)

第二个脚本块的第一行实际上评估window.prop返回它的值(或者在这种情况下它是undefined