javascript中關(guān)于執(zhí)行環(huán)境的雜談
更新時間:2011年08月14日 17:35:29 作者:
如你所知,javascript里執(zhí)行環(huán)境是作為一個最核心的概念存在的。相信廣大FE筒子們對于這個概念不會陌生,它定義了變量或函數(shù)有權(quán)訪問其他數(shù)據(jù)范圍以及其行為。
——這就要從JAVASCRIPT的解釋器開始說起了:每當(dāng)JAVASCRIPT解釋器開始執(zhí)行一個函數(shù)的時候,都會創(chuàng)建一個執(zhí)行環(huán)境,并且還會產(chǎn)生一個和這個函數(shù)息息相關(guān)的變量對象,在這個執(zhí)行環(huán)境中定義的一切變量或者函數(shù)都會被他保存起來。但是他就像有關(guān)部門,可能和你息息相關(guān),但是你永遠(yuǎn)找不到他的身影,你是無法調(diào)用這個對象的,但是JAVASCRIPT解析器處理數(shù)據(jù)時便會調(diào)用到它。
點題就到此為止了,讓我們真刀真槍來說說執(zhí)行環(huán)境吧。先從全局執(zhí)行環(huán)境開始,他處于整個執(zhí)行環(huán)境的最外面,并且是作為window對象的屬性添加的。
舉個例子:
<html>
<head>
<script type="text/javascript">
var a = 1;
(function(){
alert(window.a === a);
})();
</script>
</head>
<body>
</body>
</html>
上面這個栗子,最后會彈出true。也就是說,我們在最外圍定義的全局變量,最終都收編到了window上面了。每當(dāng)一個執(zhí)行環(huán)境中的代碼全部執(zhí)行結(jié)束之后,里面一干變量以及函數(shù)的定義都會被押下,銷毀。吃果果的兔死狗烹啊。
但不得不說的是,Javascript的實現(xiàn)允許有多個全局執(zhí)行對象。納尼?!是的,用一個說爛了的栗子吧:IFRAME,IFRAME里面擁有者不同于瀏覽窗口的全局作用環(huán)境。當(dāng)然如果這里牽涉了跨域獲取屬性,那么就要說到安全性了。恩,點到為止。就說那么多吧
點題就到此為止了,讓我們真刀真槍來說說執(zhí)行環(huán)境吧。先從全局執(zhí)行環(huán)境開始,他處于整個執(zhí)行環(huán)境的最外面,并且是作為window對象的屬性添加的。
舉個例子:
復(fù)制代碼 代碼如下:
<html>
<head>
<script type="text/javascript">
var a = 1;
(function(){
alert(window.a === a);
})();
</script>
</head>
<body>
</body>
</html>
上面這個栗子,最后會彈出true。也就是說,我們在最外圍定義的全局變量,最終都收編到了window上面了。每當(dāng)一個執(zhí)行環(huán)境中的代碼全部執(zhí)行結(jié)束之后,里面一干變量以及函數(shù)的定義都會被押下,銷毀。吃果果的兔死狗烹啊。
但不得不說的是,Javascript的實現(xiàn)允許有多個全局執(zhí)行對象。納尼?!是的,用一個說爛了的栗子吧:IFRAME,IFRAME里面擁有者不同于瀏覽窗口的全局作用環(huán)境。當(dāng)然如果這里牽涉了跨域獲取屬性,那么就要說到安全性了。恩,點到為止。就說那么多吧
您可能感興趣的文章:
- js 函數(shù)的執(zhí)行環(huán)境和作用域鏈的深入解析
- 深入Javascript函數(shù)、遞歸與閉包(執(zhí)行環(huán)境、變量對象與作用域鏈)使用詳解
- 淺談javascript中執(zhí)行環(huán)境(作用域)與作用域鏈
- javascript作用域鏈與執(zhí)行環(huán)境詳解
- javascript基礎(chǔ)進(jìn)階_深入剖析執(zhí)行環(huán)境及作用域鏈
- 談一談js中的執(zhí)行環(huán)境及作用域
- javascript執(zhí)行環(huán)境及作用域詳解
- 淺談JavaScript 執(zhí)行環(huán)境、作用域及垃圾回收
- 老生常談原生JS執(zhí)行環(huán)境與作用域
- JavaScript執(zhí)行環(huán)境及作用域鏈實例分析
相關(guān)文章
JS中生成隨機數(shù)的用法及相關(guān)函數(shù)
這篇文章主要為大家介紹了JS中生成隨機數(shù)的用法,為大家提供了相關(guān)函數(shù)的使用方法,感興趣的朋友可以參考一下2016-01-01
微信小程序如何通過用戶授權(quán)獲取手機號(getPhoneNumber)
這篇文章主要介紹了微信小程序如何通過用戶授權(quán)獲取手機號(getPhoneNumber),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-01-01
JavaScript?Object.defineProperty與proxy代理模式的使用詳細(xì)分析
這篇文章主要介紹了JavaScript?Object.defineProperty與proxy代理模式的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-10-10
js冒泡法和數(shù)組轉(zhuǎn)換成字符串示例代碼
將數(shù)組轉(zhuǎn)換成字符串的方法有很多,想必大家也不會陌生,下面為大家講解下js冒泡法的使用,感興趣的朋友可以參考下2013-08-08
Taro小程序自定義頂部導(dǎo)航欄功能的實現(xiàn)
這篇文章主要介紹了Taro小程序自定義頂部導(dǎo)航欄功能的實現(xiàn),本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12
JavaScript獲取時區(qū)實現(xiàn)過程解析
這篇文章主要介紹了JavaScript獲取時區(qū)實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-09-09

