为什么我的JavaScript代码表现很奇怪?

时间:2013-05-14 15:40:29

标签: javascript

有人可以解释为什么删除在第二个函数中不起作用吗?

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


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

1 个答案:

答案 0 :(得分:5)

删除操作符用于删除属性,而不是对象。

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

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