1

有人可以解释为什么 delete 在第二个函数中起作用而不是在第一个函数中起作用吗?

var myFunction = (function (val) {
    delete val;
    return val;
})(10);
console.log(myFunction);


var myFunction1 = (function () {
    myVar = "test"
    delete myVar;
    return myVar;
})();
console.log(myFunction1);
4

1 回答 1

5

delete 运算符用于删除属性,而不是对象。

在第一个函数中,val是一个变量,永远不能被删除。然而,在 function2myVar中使用简写声明在全局对象上创建属性,并且可以删除属性。实际上这是删除操作符的主要目的。

删除运算符也返回一个布尔值。您可以使用它来更好地了解它的工作原理,例如:在您的情况下console.log(delete val);将打印 falseconsole.log(delete myVar);并将打印 true。还值得记住的是,返回值是基于对象之后是否存在,而不是删除是否成功。

于 2013-05-14T15:41:35.207 回答