Javascript var變量刪除原理及實現(xiàn)
var有三種聲明的情形:
var聲明的全局變量 var在函數(shù)范圍內(nèi)聲明的局部變量 eval中聲明的全局變量。首先,
1、2種情形var聲明的變量是無法刪除的。
盡管var聲明的全局變量是屬于window對象的屬性(在瀏覽器中),但依然是無法刪除的,因為這種屬性的configurable=false,因此不能delete掉。
局部變量就更不用說了,連var變量依附的對象都不知道在哪里,肯定無法刪除。
而eval(’vara=1’)看似和直接var是一樣的效果(當(dāng)然是在全局作用執(zhí)行eval),執(zhí)行完也會在window對象上創(chuàng)建一個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>
函數(shù)不能被delete掉
局部作用域中的函數(shù)也不能被delete掉
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. 利用promise及參數(shù)解構(gòu)封裝ajax請求的方法2. asp(vbs)Rs.Open和Conn.Execute的詳解和區(qū)別及&H0001的說明3. ASP 信息提示函數(shù)并作返回或者轉(zhuǎn)向4. .NET中l(wèi)ambda表達式合并問題及解決方法5. PHP設(shè)計模式中工廠模式深入詳解6. JSP數(shù)據(jù)交互實現(xiàn)過程解析7. windows服務(wù)器使用IIS時thinkphp搜索中文無效問題8. ThinkPHP5實現(xiàn)JWT Token認證的過程(親測可用)9. 如何基于Python Matplotlib實現(xiàn)網(wǎng)格動畫10. Ajax實現(xiàn)表格中信息不刷新頁面進行更新數(shù)據(jù)
