var a = 1;
delete a;
返回false
a = 1;
delete a;
返回true
请问为什么呢?var a = 1 和 window.a = 1 有什么区别呢?
var a = 1;
delete a;
返回false
a = 1;
delete a;
返回true
请问为什么呢?var a = 1 和 window.a = 1 有什么区别呢?
//全局变量
var a = 1;
delete a;
//隐式全局变量
a = 1;
delete a;
隐式全局变量和明确定义的全局变量间有些小的差异,就是通过delete操作符让变量未定义的能力
通过var创建的全局变量(任何函数之外的程序中创建)是不能被删除的
无var创建的隐式全局变量(无视是否在函数中创建)是能被删除的
这表明,在技术上,隐式全局变量并不是真正的全局变量,但它们是全局对象的属性。属性是可以通过delete操作符删除的,而变量是不能的
其实这种问题,你google一下完全可以找到答案,例如这篇就讲的很不错,完全可以解释你的疑惑:
http://blog.charlee.li/javascript-variables-and-delete-operator/
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
翻了《js权威指南》,原理大概是:
对象的属性有4个特性(attributes),其中一个叫
configurable
,如果这个属性值为false
则一定不能被delete
。configurable
为false
,所以不能删除。但我还不确定
configurable
为true
是否一定能删除,待补充。delete扩展资料