成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺談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. 應用最廣的十大Javascript框架
責任編輯:彭凡 來源: kaima.cnblogs.com
相關推薦

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面向對象

2015-05-18 13:51:08

2013-03-26 10:27:01

JavaScriptjson

2011-07-14 10:58:26

JavaScript強制類型轉換函數(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技術棧公眾號

主站蜘蛛池模板: 欧美在线观看免费观看视频 | 不卡一区二区三区四区 | 国产精品成人久久久久 | 一区二区三区播放 | 亚洲一区二区三区视频 | 欧美1区| 请别相信他免费喜剧电影在线观看 | 欧美日韩在线精品 | 国产精品久久久久久亚洲调教 | 日韩快播电影 | 欧美2区 | 亚洲精品欧洲 | 欧美成人激情 | 夜久久| 久久网站免费视频 | 在线视频一区二区 | 欧美专区在线视频 | 成人三级网址 | 中文字幕一区在线观看视频 | 成人性生交大片免费看中文带字幕 | 99久久亚洲| 欧美精品乱码久久久久久按摩 | 超碰av在线| 欧美黄色片 | 一级片av| 国产激情亚洲 | 欧美理伦片在线播放 | 一区二区三区四区在线视频 | 欧美日韩专区 | 国产欧美三区 | 成人在线精品视频 | 国产精品18毛片一区二区 | 免费国产黄网站在线观看视频 | 999久久久免费精品国产 | 国产一区二区在线免费观看 | 国产精品视频网 | av黄色网 | 亚洲黄色在线 | 久久尤物免费一区二区三区 | 欧美日韩久久久 | 国产一区免费视频 |