javascript - delete 关键字对全局变量的不同行为

标签 javascript

请考虑以下片段(fiddle here):

​var a;

​a = 1;
console.log(delete a​); // prints 'false'

​b = 1;
console.log(delete b);​ // prints 'true'​​​​

为什么 delete 关键字对全局变量 ab 的行为不同?

最佳答案

From the MDN docs :

The delete operator removes a property from an object.

全局变量(不带 var)是全局对象(通常是 window)的属性,因此可以删除。

var 不是全局变量,而是外部作用域中的局部变量 - 不是全局对象的属性 - 所以 delete 不会删除它。来自那些文档:

x = 42;     // creates the property x on the global object
var y = 43; // declares a new variable, y

delete x;   // returns true  (x is a property of the global object and can be deleted)
delete y;   // returns false (delete doesn't affect variable names)

关于javascript - delete 关键字对全局变量的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12433223/

相关文章:

javascript - 检查字符串是否遵循 JavaScript 中给定的模式

javascript - 在成功/完成/错误函数中访问发布请求的参数数据

javascript - 获取谷歌 API key

javascript - 在angular-chart.js的饼图中显示数据标签

php - 将一个复制到另一个文本框并更改字母

javascript - react-bootstrap 中 FormControl 和 ControlLabel 之间的高度不同

javascript - 在动态元素上使用 on() 处理程序不起作用

javascript - 如何自动暂停其他音频播放器并仅播放 Wix 网站上选择的音频播放器?

javascript - 如何将GET改为POST?

javascript - 渲染从 firebase 检索的异步数据