[英]deleting variables using delete operator
為什么函數內部函數無法刪除,函數外部可以刪除?
(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); 但似乎錯了!
這是因為,delete運算符返回一個布爾值。如果它是true或false取決於對象之后是否存在,而不是刪除是否成功。這意味着如果你試圖刪除第一個中從不存在的東西,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
添加::
刪除僅在不能刪除屬性時返回false。 所以在所有其他情況下它返回true
因為你的變量的范圍是你的功能。 外部功能不存在簡單。 第二個問題與第一個問題相似 - 變量在函數外部不存在,因為它是在函數內部聲明的。
看看這段代碼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。
在嘗試刪除聲明的變量的情況下,您不能這樣做,因為它們被創建為不可刪除的。 因此,嘗試這樣做會返回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
然后在第二個刪除語句中,范圍內沒有變量顏色 ,並且嘗試刪除未解析為類型引用的ientifier或者是不可解析的引用返回true ( ECMA-262§11.4.1 )
如何只刪除myFunc的變量?
你不能(見上文)。
你無法刪除變量。 但你可以刪除一個屬性。 請參閱下面的示例。
(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/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.