为什么无法删除函数内部的函数并且可以删除函数外部?
(function myFunc(){
var colors = ['red','green','blue'];
console.log(delete colors);//cannot be deleted, returns false
})();
console.log(delete colors);// can be deleted, returns true
另一个问题:
假设有colors
- 变量在不同的函数中定义,如下所示 -
(function myFunc(){
var colors = ['red','green','blue'];
})();
(function nextFunc(){
var colors = ['one','two','three'];
})();
如何只删除myFunc的变量?
我试过console.log(删除myFunc.colors);但似乎错了!
答案 0 :(得分:2)
多数民众赞成因为,delete运算符返回一个布尔值。如果它为true或者取决于对象后是否存在,而不是删除是否成功。这意味着如果你试图删除一些从未存在过的东西,delete将返回true首先。
(function myFunc(){
var colors = ['red','green','blue'];
console.log(delete colors);//cannot be deleted, returns false
})();
console.log(delete none_existing_object); //RETURNS true
已添加::
delete仅在不能删除属性时返回false。所以在所有其他情况下它返回true
答案 1 :(得分:0)
因为变量的范围是你的功能。外部功能不存在简单。 第二个问题与第一个问题相似 - 变量在函数外部不存在,因为它是在函数内部声明的。
查看此代码http://jsfiddle.net/nizamabreu/MfDJz/
//Return True
alert(delete colors);// can be deleted, returns true
// Return false
function myFunc(){
var colors = ['red','green','blue'];
alert(delete colors);//cannot be deleted, returns false
}
myFunc();
//Return True
alert(delete colors);// can be deleted, returns true
如果我尝试删除不存在的变量,js将返回true。
答案 2 :(得分:0)
在尝试删除声明的变量的情况下,您不能这样做,因为它们被创建为不可删除的。因此,尝试这样做会返回false,因为该属性未被删除。
你在哪里:
(function myFunc(){
var colors = ['red','green','blue'];
console.log(delete colors);//cannot be deleted, returns false
})();
console.log(delete colors);// can be deleted, returns true
然后在第二个 delete 语句中,范围内没有变量 colors 并尝试删除未解析为类型引用或不可解析的标识符引用返回 true (ECMA-262 §11.4.1)
如何只删除myFunc的变量?
你不能(见上文)。
答案 3 :(得分:0)
您无法删除变量。但你可以删除一个属性。请参阅下面的示例。
(function myFunc(){
var colors = ['red','green','blue'];
var emp = {
name : 'Jagadeesh',
id : 100
}
console.log(delete colors);//cannot be deleted, return`enter code here`s false
console.log(delete emp.name);//can be deleted, returns true
})();
这里我创建了一个带有属性名称和id的JSON \ temp。如果我删除emp.name,它给出了true。运行上面的例子。你将能够理解它。另一件事是你试图删除未定义的函数外的变量。所以你变得真实。您无法访问函数范围之外的变量。测试你可以console.log(颜色)。它将显示错误说未定义。您需要了解变量范围。在这里查看。 http://dailyjs.com/2012/07/23/js101-scope/