javascript var變量刪除


var有三種聲明的情形:

  1.     var聲明的全局變量

  2.     var在函數范圍內聲明的局部變量

  3.     eval中聲明的全局變量。

首先,

1、2種情形var聲明的變量是無法刪除的。

盡管var聲明的全局變量是屬於window對象的屬性(在瀏覽器中),但依然是無法刪除的,因為這種屬性的configurable=false,因此不能delete掉。

局部變量就更不用說了,連var變量依附的對象都不知道在哪里,肯定無法刪除。

而eval('var a = 1')看似和直接var是一樣的效果(當然是在全局作用執行eval),執行完也會在window對象上創建一個a屬性,但是這個屬性的configurable=true,因此可以刪除。

 

<script type="text/javascript">
    var a = 1;
    console.log(Object.getOwnPropertyDescriptor(window, 'a'));      //false
    aa=1;
    console.log(Object.getOwnPropertyDescriptor(window, 'aa'));    //true
    with({}) {
        var b = 1;
        console.log(Object.getOwnPropertyDescriptor(window, 'b'));  //false
        console.log(delete b);
    }
    eval('var c = 1');
    console.log(Object.getOwnPropertyDescriptor(window, 'c'));     //true
</script>

函數不能被delete掉

局部作用域中的函數也不能被delete掉

 

本文作者starof,因知識本身在變化,作者也在不斷學習成長,文章內容也不定時更新,為避免誤導讀者,方便追根溯源,請諸位轉載注明出處:http://www.cnblogs.com/starof/p/4904929.html有問題歡迎與我討論,共同進步。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM