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

