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),但是你永遠找不到他的身影,你是無法調(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ǔ)進階_深入剖析執(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)文章
基于css3新屬性transform及原生js實現(xiàn)鼠標(biāo)拖動3d立方體旋轉(zhuǎn)
這篇文章主要介紹了基于css3新屬性transform及原生js實現(xiàn)鼠標(biāo)拖動3d立方體旋轉(zhuǎn) 的相關(guān)資料,需要的朋友可以參考下2016-06-06
JS使用Date對象實時顯示當(dāng)前系統(tǒng)時間簡單示例
這篇文章主要介紹了JS使用Date對象實時顯示當(dāng)前系統(tǒng)時間,涉及javascript基于定時器動態(tài)操作Date對象相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2018-08-08
微信小程序?qū)崿F(xiàn)帶參數(shù)的分享功能(兩種方法)
本文通過兩種方法給大家介紹微信小程序?qū)崿F(xiàn)帶參數(shù)的分享,需要的朋友可以參考下2019-05-05
Javascript立即執(zhí)行函數(shù)(IIFE)實例詳解
IIFE全拼Imdiately?Invoked?Function?Expression,是一個在定義的時候就立即執(zhí)行的JavaScript函數(shù),這篇文章主要給大家介紹了關(guān)于Javascript立即執(zhí)行函數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04
單行 JS 實現(xiàn)移動端金錢格式的輸入規(guī)則
這篇文章主要介紹了單行 JS 實現(xiàn)移動端金錢格式的輸入規(guī)則,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-05-05
微信小程序云函數(shù)添加數(shù)據(jù)到數(shù)據(jù)庫的方法
這篇文章主要介紹了微信小程序云函數(shù)添加數(shù)據(jù)到數(shù)據(jù)庫的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03

