簡體   English   中英

使用delete運算符刪除變量

[英]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或者是不可解析的引用返回trueECMA-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM