当我遇到这个问题时,我试图声明一个窗口属性。 以下两个代码片段之间有什么区别?
<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>
根据我的理解,他们正在做同样的事情。
答案 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
。
This article描述了JavaScript中的undefined
值。
答案 2 :(得分:0)
第二个脚本块的第一行实际上评估window.prop
返回它的值(或者在这种情况下它是undefined
)