您的位置:首页 > Web前端 > JavaScript

js中,全局变量与直接添加在window属性的区别

2017-02-07 00:00 351 查看
摘要: var

在js中定义的全局变量是挂在window下的,而window的属性也一样,那么这两者有什么区别呢?

a = 2;
console.log(a);                // 2
console.log(window.a);   // 2


其实这两者还是有小小的区别的,全局变量是不能通过delete操作符删除的,而直接定义在window上的属性是可以删除的。

那么为什么全局变量不能删除呢?

因为全局变量也是个对象,这个对象时通过叫做PropertyDescriptor来定义的。

可以在浏览器中调用Object.getOwnPropertyDescriptor(对象, 属性)来查看

举例:

var test = 2;
window.test; // 2
Object.getOwnPropertyDescriptor(window, "test") //Object {value: 2, writable: true, enumerable: true, configurable: false}

大家可以看到最后一行有configurable(这个方法用于获取defineProperty方法设置的property 特性)的特性,这个特性决定了该属性是不能被删除的。

ECMAScript5 Object的新属性方法

http://www.cnblogs.com/dolphinX/p/3348467.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: