偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

淺談Javascript中的eval與with

開發(fā) 前端
Javascript的作用域是詞法作用域(lexical scope or static scope),也就是說作用域鏈在定義的時候就確定了。也提到eval、with會擾亂作用域鏈(dynamic scope)。

javascript的作用域是詞法作用域(lexical scope or static scope),也就是說作用域鏈在定義的時候就確定了。也提到eval、with會擾亂作用域鏈(dynamic scope)。

eval

IE下:運行eval()會受當前作用域限制,運行execScript()則無視當前作用域,直接在全局作用域下執(zhí)行。

Firefox下:eval()和window.eval()效果不一樣,這很奇怪,畢竟FF下,eval==window.eval。前者會受當前作用域限制,后者無視當前作用域,在全局作用域下執(zhí)行(相當于IE的execScript())。

有人寫了一篇比較通俗的,參考這篇文章

with

with會暫時修改作用域鏈。

<script>
function a(){
    with (b) {
        ...
    }
}a();
</script>

函數(shù)a在定義的時候,就確定了a的作用域鏈,我們姑且認為這條鏈的最頂端是全局對象window。

當函數(shù)a被執(zhí)行的時候,javascript引擎生成了一個call object并將其添加到作用域鏈尾部上(window對象之后),語句運行到with(b)時,將b添加到作用域鏈的尾部,所以with之內(nèi)的變量查找,就會優(yōu)先從這條鏈的b上查找---> 然后從a的call object中查找---> ***查找window。with內(nèi)的語句執(zhí)行完之后,作用域鏈恢復原狀(b被移出作用域鏈)。

以上就是例子代碼運行時的微觀世界。

with是不被推薦的,因為他操作作用域鏈(移進、移出,多累),執(zhí)行效率低下。

有些人可能認為with能節(jié)省代碼量,比如

with(document.forms[0]){
    name.value='';
    address.value='';
    email.value='';
}

就能少寫不少document.forms[0],
其實定義一個局部變量取代with中的b也可以達到同樣目的,效率也無損失。

var c=document.forms[0];
    c.name.value='';
    c.address.value='';
    c.email.value='';

【編輯推薦】

  1. Javascript中的replace方法與正則表達式講解
  2. 詳解Javascript trim()函數(shù)實現(xiàn)
  3. 應(yīng)用最廣的十大Javascript框架
責任編輯:彭凡 來源: kaima.cnblogs.com
相關(guān)推薦

2009-07-31 13:48:34

C# eval()函數(shù)

2017-08-28 15:21:29

異步處理回調(diào)函數(shù)異步編程

2021-07-16 07:57:35

JavaScriptEval函數(shù)

2024-09-03 13:32:11

JavaScriptEval函數(shù)

2024-07-11 14:05:28

JavaScript函數(shù)

2017-08-22 16:40:22

前端JavaScript接口

2009-06-10 22:06:29

JavaScript面向?qū)ο?/a>

2015-05-18 13:51:08

2013-03-26 10:27:01

JavaScriptjson

2011-07-14 10:58:26

JavaScript強制類型轉(zhuǎn)換函數(shù)

2020-12-07 06:38:32

JavaScriptEval 函數(shù)

2009-04-21 09:37:50

ASP.NETAjaxJavaScript

2009-06-18 12:21:07

javascriptdom

2014-07-24 10:00:21

2009-06-24 10:49:16

JavaScript

2015-05-06 10:02:26

2015-12-02 11:06:20

2016-09-18 20:53:16

JavaScript閉包前端

2009-06-24 15:00:39

Javascript代

2011-09-26 10:50:16

JavaScript
點贊
收藏

51CTO技術(shù)棧公眾號