delete 1; //return true
delete {}; //return true
将0和{}看作一个表达式, 并尝试删除它的求值结果
x = 1;
delete x; //return true
var a = {name: "csdn"};
delete a.name; //return true
delete a.age; //return true
当
x是全局对象global的属性的时候,delete x其实只需要返回global.x这个引用就可以了, 而当它不是全局对象global的属性时候, 那么就需要从当前环境中找到一个名为x的引用, 找到这两种不同的引用
的过程, 就称之为resolvebinding, 而这两种不同的x, 就称为不同环境下绑定的标识符或名字
delete a.name不是删除一个值("csdn"), 而是删除一种引用。
delete 其实只能删除一种引用, 即对象的成员
delete c.x;//refance error
因为c.这个引用不存在, 所以会报一个refance error
由上面看出obj.x返回一个关于x的引用, 然后它可以作为下一个操作符号, 例如函数调用符号的左手端来使用, 于是有了对象方法调用运算
obj.x();
文章探讨了JavaScript中delete操作符的用法,它用于删除对象的属性,而不是变量的值。delete能成功删除全局对象的属性,但在非全局作用域中需先解析标识符。当尝试删除不存在的对象成员时,会抛出ReferenceError。文章强调delete主要作用于对象成员的引用。

被折叠的 条评论
为什么被折叠?



