delete运算符也有一个返回值,如果删除一个属性成功了,返回true,如果不能删除属性,因为该属性是不可写,将返回false,或者如果在严格模式下会抛出一个错误。
var benjamin = { "name": "zuojj", "url" : "http://www.zuojj.com" }; var nameDeleted = delete benjamin.name; // Outputs: true console.log(nameDeleted); "use strict"; var benjamin_ = "zuojj"; //Outputs: Uncaught SyntaxError: Delete of an unqualified identifier in strict mode. delete benjamin_;
你可能不知道在什么情况下使用删除运算符。答案是,只要你真的想从对象中删除一个属性。
有的时候,Javascript开发不是删除一个属性,而是把这个属性值设置为null.像下面这样:
var benjamin = { "name": "zuojj", "url" : "http://www.zuojj.com" }; benjamin.name = null;
虽然这有效地切断从原来的值的属性,但该属性本身仍然存在的对象上,你可以看到如下:
// Outputs: Object { name: null, url: "http://www.zuojj.com" } console.log(benjamin);
同时,像in和for in 循环运算将不会报告null属性的存在,如果你使用个对象,可能使用这些方法来检查一个对象,你可能想确保你真正删除任何不需要的属性。
最后,你应该记住,删除并没有破坏属性的值,仅仅属性本身,看下面的例子:
var name = "zuojj", benjamin = {}; benjamin.name = name; delete benjamin.name; //Outputs: "zuojj" console.log(name);
这里,name和benjamin.name映射到相同的值,真如你所看到的,删除benjamin.name并不会影响name.
以上,就是我对delete运算符的概述,不妥之处,欢迎大家批评指正。
您可能感兴趣的文章: