Javascript var變量刪除原理及實現(xiàn)
var有三種聲明的情形:
- var聲明的全局變量
- var在函數(shù)范圍內(nèi)聲明的局部變量
- eval中聲明的全局變量。
首先,
1、2種情形var聲明的變量是無法刪除的。
盡管var聲明的全局變量是屬于window對象的屬性(在瀏覽器中),但依然是無法刪除的,因為這種屬性的configurable=false,因此不能delete掉。
局部變量就更不用說了,連var變量依附的對象都不知道在哪里,肯定無法刪除。
而eval('vara=1')看似和直接var是一樣的效果(當然是在全局作用執(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)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JS函數(shù)內(nèi)部屬性之a(chǎn)rguments和this實例解析
在函數(shù)內(nèi)部,有兩個特殊的對象:arguments和this。這篇文章主要介紹了函數(shù)內(nèi)部屬性之a(chǎn)rguments和this ,需要的朋友可以參考下2018-10-10JS小數(shù)運算出現(xiàn)多為小數(shù)問題的解決方法
這篇文章主要介紹了JS小數(shù)運算出現(xiàn)多為小數(shù)問題的解決方法,需要的朋友可以參考下2016-06-06理解javascript中的回調(diào)函數(shù)(callback)
這篇文章主要介紹了理解javascript中的回調(diào)函數(shù)(callback),本文著重于對回調(diào)函數(shù)概念的理解,需要的朋友可以參考下2014-09-09javascript延時重復(fù)執(zhí)行函數(shù) lLoopRun.js
javascript延時重復(fù)執(zhí)行函數(shù) lLoopRun.js...2007-06-06JS實現(xiàn)點擊發(fā)送驗證碼 xx秒后重新發(fā)送功能
在一些注冊類的網(wǎng)站,經(jīng)常遇到這樣的需求,點擊發(fā)送驗證碼,xx秒后重新發(fā)送,這樣的功能怎么實現(xiàn)呢,接下來通過本文給大家分享js點擊發(fā)送驗證碼 xx秒后重新發(fā)送功能,需要的朋友參考下吧2019-07-07