有人可以解释为什么删除在第二个函数中不起作用吗?
var myFunction = (function (val) {
delete val;
return val;
})(10);
console.log(myFunction);
var myFunction1 = (function () {
myVar = "test"
delete myVar;
return myVar;
})();
console.log(myFunction1);
答案 0 :(得分:5)
删除操作符用于删除属性,而不是对象。
在第一个函数中,val
是一个变量,永远不能删除。但是在function2中myVar
使用简写声明在全局对象上创建属性,并且可以删除属性。实际上,这是删除操作符的主要目的。
delete运算符也返回一个布尔值。您可以使用它来更好地理解它的工作原理,例如:在您的情况下,console.log(delete val);
将打印为false,console.log(delete myVar);
将打印为true。值得记住的是,返回值取决于对象之后是否存在,而不是删除是否成功。