搜尋

首頁  >  問答  >  主體

javascript - js循環時的變數標記是種怎樣的數據

如下所示,在循環中,循環的變數刪除後,循環仍能進行,是因為這個變數被特殊定義為了不可編輯,還是說編譯器在上下文中創建了一個內部的同名的變數供循環使用?

for (var j = 0; j < 10; j++) {
  delete j;
  console.log(j); // 正常输出 0 1 2 3 ...
}
漂亮男人漂亮男人2750 天前457

全部回覆(1)我來回復

  • 为情所困

    为情所困2017-05-19 10:43:43

    因為 delete只能對實例屬性有作用,不能直接delete變數或函數。
    你執行以下指令,回傳的將是false,表示刪除無效。

    // 删除变量的场景
    var j = 1;  
    delete j;  // 返回false
    console.log(j);  // 依然是1
    
    // 删除函数的场景
    function x() {    
      console.log('hello'); 
    }
    delete x;     // 返回false
    x();          // 输出'hello', 函数依然有效
    
    // 删除对象属性的场景
    var a = {prop: 1};  
    delete a.prop;   // 返回true,表示删除成功
    console.log(a.prop);   // undefined

    附: delete操作符語法, 來自 MDN文件

    delete expression 

    其中的expression是一個物件屬性的引用

    delete object.property
    delete object['property']

    回覆
    0
  • 取消回覆