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