最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javascript 用局部變量來代替全局變量

 更新時間:2009年05月29日 20:24:56   作者:  
在JavaScript中,我們應(yīng)該盡可能的用局部變量來代替全局變量,這句話所有人都知道,可是這句話是誰先說的?

上面的結(jié)果是通過對變量執(zhí)行寫操作而得出的,其實我很好奇,讀取變量時的情況會不會有什么不同,于是接著做了下面的測試。結(jié)果發(fā)現(xiàn),讀的速度要比寫的速度快一些,但是性能變化的趨勢是一致的。

       和上個測試一樣,Internet Explorer和Firefox還是最慢的,Opera表現(xiàn)了非常搶眼的性能,而同樣的,Chrome和最新版本的Webkit午夜版顯示了和作用域深度無關(guān)的性能趨勢,同樣需要注意的是,F(xiàn)irefox 3.1 Beta 2的變量訪問時間還是會伴隨著深度出現(xiàn)一個奇怪的跳躍。

       在測試的過程中,我發(fā)現(xiàn)一個有趣的現(xiàn)象,就是Chrome在訪問全局變量的時候會有額外的性能損失。訪問全局變量的時間和作用域?qū)訑?shù)沒有關(guān)系,但是會比訪問同樣層數(shù)的局部變量的時間多出50%。

       這兩個測試可以給我們帶來什么啟示呢?首先是驗證了那個古老的觀點,就是要盡可能的使用局部變量。在所有的瀏覽器下,訪問局部變量都比訪問跨作用域的變量要快,當然也包括全局變量。下面這幾點應(yīng)該是通過這個測試得出的經(jīng)驗吧:

1、仔細檢查函數(shù)中所有使用的變量,如果有一個變量不是當前作用域定義的,而且使用了不止一次,那么我們就應(yīng)該把這個變量保存在局部變量中,而使用這個局部變量來進行讀寫操作。這樣可以幫助我們將作用域外的變量的搜索深度減少到1.這對全局變量尤為重要,因為全局變量總是被放到作用域鏈的最后位置來搜索。

2、避免使用with語句。因為它會修改執(zhí)行上下文(Execution Context)的作用域鏈,在最前面添加一個對象(Variable Object)。這就意味著在執(zhí)行with的過程中,實際上的局部變量都被移到作用域鏈上的第二個位置,這會帶來性能上的損失。

3、如果你確定一段代碼肯定會拋出異常,那么就要避免使用try-catch,因為catch分支在作用域鏈上的處理方法和with是一樣的。但try分支的代碼是沒有性能損失的,所以還是建議用try-catch來捕獲那些不可預知的錯誤。

       如果你想圍繞這個話題展開更多的討論,我在上個月的 Mountain View JavaScript Meetup 中曾經(jīng)發(fā)表了一個小演講??梢栽赟lideShare上下載 幻燈片,或者觀看聚會的 完整視頻,我的演講大概從11分鐘左右時開始。

譯者筆記
大家如果在閱讀本文的過程中,有什么疑惑,建議延伸閱讀以下兩篇文章:
1、Richie寫的《JavaScript對象模型-執(zhí)行模型
2、《ECMA-262第三版》,主要看看第十章,就是執(zhí)行上下文(Execution Context)那張,本文提到的名詞在那里都有詳細的解釋。

       在最后的時候,Nicholas提到一個Mountain View JavaScript Meetup,Meetup那個網(wǎng)站其實就是一個各種現(xiàn)實世界活動的組織網(wǎng)站,需要翻墻才能訪問,住在California真幸福,有那么多的好活動可以參加,呵呵。

相關(guān)文章

  • JavaScript計時器示例分析

    JavaScript計時器示例分析

    這篇文章主要介紹了JavaScript計時器示例分析,需要的朋友可以參考下
    2015-02-02
  • JS實現(xiàn)自定義狀態(tài)欄動畫文字效果示例

    JS實現(xiàn)自定義狀態(tài)欄動畫文字效果示例

    這篇文章主要介紹了JS實現(xiàn)自定義狀態(tài)欄動畫文字效果,涉及javascript結(jié)合時間函數(shù)動態(tài)設(shè)置IE狀態(tài)欄文字顯示效果相關(guān)操作技巧,需要的朋友可以參考下
    2017-10-10
  • Javascript判斷文件是否存在(客戶端/服務(wù)器端)

    Javascript判斷文件是否存在(客戶端/服務(wù)器端)

    這篇文章主要介紹了Javascript判斷文件是否存在的方法適用于客戶端、服務(wù)器端,遠程文件,示例代碼如下,需要的朋友可以參考下
    2014-09-09
  • 使用javascript函數(shù)編寫簡單銀行取錢存錢流程

    使用javascript函數(shù)編寫簡單銀行取錢存錢流程

    本文通過實例代碼給大家講解了使用javascript函數(shù)編寫簡單銀行取錢存錢流程,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧
    2018-05-05
  • 鼠標事件延時切換插件

    鼠標事件延時切換插件

    為了防止誤操作,很多時候需要對鼠標滑過觸發(fā)的事件進行延時處理。網(wǎng)易首頁的選項卡好幾年之前就添加了這個特性,當時我記得是采用150毫秒作為觸發(fā)基準
    2011-03-03
  • uniapp項目實踐之全局公共組件樣式及方法使用示例詳解

    uniapp項目實踐之全局公共組件樣式及方法使用示例詳解

    這篇文章主要為大家介紹了uniapp項目實踐之全局公共組件樣式及方法使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • 微信小程序webview與h5通過postMessage實現(xiàn)實時通訊的實現(xiàn)

    微信小程序webview與h5通過postMessage實現(xiàn)實時通訊的實現(xiàn)

    這篇文章主要介紹了微信小程序webview與h5通過postMessage實現(xiàn)實時通訊的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • javascript實現(xiàn)貪吃蛇經(jīng)典游戲

    javascript實現(xiàn)貪吃蛇經(jīng)典游戲

    這篇文章主要為大家詳細介紹了javascript實現(xiàn)貪吃蛇經(jīng)典游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • javascript實現(xiàn)評分功能

    javascript實現(xiàn)評分功能

    這篇文章主要為大家詳細介紹了javascript實現(xiàn)評分功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • 詳解JavaScript的this指向和綁定

    詳解JavaScript的this指向和綁定

    JavaScript 中的 new、bind、call、apply 實際這些都離不開 this,因此本文將著重討論 this,在此過程中分別講解其他相關(guān)知識點。
    2020-09-09

最新評論

无为县| 井研县| 望都县| 汤阴县| 元阳县| 沙河市| 鱼台县| 栖霞市| 南充市| 杂多县| 开阳县| 射阳县| 湟中县| 桃江县| 藁城市| 礼泉县| 乌兰察布市| 西青区| 壤塘县| 呼和浩特市| 南开区| 大渡口区| 新沂市| 合阳县| 夏津县| 皋兰县| 溆浦县| 赤水市| 西和县| 玉树县| 普兰店市| 新密市| 忻城县| 石楼县| 新密市| 长武县| 紫阳县| 锡林郭勒盟| 贵港市| 个旧市| 且末县|