javascript中關(guān)于執(zhí)行環(huán)境的雜談
更新時(shí)間:2011年08月14日 17:35:29 作者:
如你所知,javascript里執(zhí)行環(huán)境是作為一個(gè)最核心的概念存在的。相信廣大FE筒子們對于這個(gè)概念不會陌生,它定義了變量或函數(shù)有權(quán)訪問其他數(shù)據(jù)范圍以及其行為。
——這就要從JAVASCRIPT的解釋器開始說起了:每當(dāng)JAVASCRIPT解釋器開始執(zhí)行一個(gè)函數(shù)的時(shí)候,都會創(chuàng)建一個(gè)執(zhí)行環(huán)境,并且還會產(chǎn)生一個(gè)和這個(gè)函數(shù)息息相關(guān)的變量對象,在這個(gè)執(zhí)行環(huán)境中定義的一切變量或者函數(shù)都會被他保存起來。但是他就像有關(guān)部門,可能和你息息相關(guān),但是你永遠(yuǎn)找不到他的身影,你是無法調(diào)用這個(gè)對象的,但是JAVASCRIPT解析器處理數(shù)據(jù)時(shí)便會調(diào)用到它。
點(diǎn)題就到此為止了,讓我們真刀真槍來說說執(zhí)行環(huán)境吧。先從全局執(zhí)行環(huán)境開始,他處于整個(gè)執(zhí)行環(huán)境的最外面,并且是作為window對象的屬性添加的。
舉個(gè)例子:
<html>
<head>
<script type="text/javascript">
var a = 1;
(function(){
alert(window.a === a);
})();
</script>
</head>
<body>
</body>
</html>
上面這個(gè)栗子,最后會彈出true。也就是說,我們在最外圍定義的全局變量,最終都收編到了window上面了。每當(dāng)一個(gè)執(zhí)行環(huán)境中的代碼全部執(zhí)行結(jié)束之后,里面一干變量以及函數(shù)的定義都會被押下,銷毀。吃果果的兔死狗烹啊。
但不得不說的是,Javascript的實(shí)現(xiàn)允許有多個(gè)全局執(zhí)行對象。納尼?!是的,用一個(gè)說爛了的栗子吧:IFRAME,IFRAME里面擁有者不同于瀏覽窗口的全局作用環(huán)境。當(dāng)然如果這里牽涉了跨域獲取屬性,那么就要說到安全性了。恩,點(diǎn)到為止。就說那么多吧
點(diǎn)題就到此為止了,讓我們真刀真槍來說說執(zhí)行環(huán)境吧。先從全局執(zhí)行環(huán)境開始,他處于整個(gè)執(zhí)行環(huán)境的最外面,并且是作為window對象的屬性添加的。
舉個(gè)例子:
復(fù)制代碼 代碼如下:
<html>
<head>
<script type="text/javascript">
var a = 1;
(function(){
alert(window.a === a);
})();
</script>
</head>
<body>
</body>
</html>
上面這個(gè)栗子,最后會彈出true。也就是說,我們在最外圍定義的全局變量,最終都收編到了window上面了。每當(dāng)一個(gè)執(zhí)行環(huán)境中的代碼全部執(zhí)行結(jié)束之后,里面一干變量以及函數(shù)的定義都會被押下,銷毀。吃果果的兔死狗烹啊。
但不得不說的是,Javascript的實(shí)現(xiàn)允許有多個(gè)全局執(zhí)行對象。納尼?!是的,用一個(gè)說爛了的栗子吧:IFRAME,IFRAME里面擁有者不同于瀏覽窗口的全局作用環(huán)境。當(dāng)然如果這里牽涉了跨域獲取屬性,那么就要說到安全性了。恩,點(diǎn)到為止。就說那么多吧
您可能感興趣的文章:
- 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)境及作用域鏈實(shí)例分析
相關(guān)文章
基于css3新屬性transform及原生js實(shí)現(xiàn)鼠標(biāo)拖動3d立方體旋轉(zhuǎn)
這篇文章主要介紹了基于css3新屬性transform及原生js實(shí)現(xiàn)鼠標(biāo)拖動3d立方體旋轉(zhuǎn) 的相關(guān)資料,需要的朋友可以參考下2016-06-06JS使用Date對象實(shí)時(shí)顯示當(dāng)前系統(tǒng)時(shí)間簡單示例
這篇文章主要介紹了JS使用Date對象實(shí)時(shí)顯示當(dāng)前系統(tǒng)時(shí)間,涉及javascript基于定時(shí)器動態(tài)操作Date對象相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-08-08微信小程序?qū)崿F(xiàn)帶參數(shù)的分享功能(兩種方法)
本文通過兩種方法給大家介紹微信小程序?qū)崿F(xiàn)帶參數(shù)的分享,需要的朋友可以參考下2019-05-05Javascript立即執(zhí)行函數(shù)(IIFE)實(shí)例詳解
IIFE全拼Imdiately?Invoked?Function?Expression,是一個(gè)在定義的時(shí)候就立即執(zhí)行的JavaScript函數(shù),這篇文章主要給大家介紹了關(guān)于Javascript立即執(zhí)行函數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04單行 JS 實(shí)現(xiàn)移動端金錢格式的輸入規(guī)則
這篇文章主要介紹了單行 JS 實(shí)現(xiàn)移動端金錢格式的輸入規(guī)則,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-05-05微信小程序云函數(shù)添加數(shù)據(jù)到數(shù)據(jù)庫的方法
這篇文章主要介紹了微信小程序云函數(shù)添加數(shù)據(jù)到數(shù)據(jù)庫的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03