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

javascript中eval函數(shù)用法分析

 更新時(shí)間:2015年04月25日 12:15:57   作者:大熊貓侯佩  
這篇文章主要介紹了javascript中eval函數(shù)用法,實(shí)例分析了javascript中eval函數(shù)的使用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下

本文實(shí)例分析了javascript中eval函數(shù)用法。分享給大家供大家參考。具體分析如下:

eval()只有一個(gè)參數(shù),如果傳入的參數(shù)不是字符串,則直接返回這個(gè)參數(shù)。否則會將字符串當(dāng)成js代碼進(jìn)行編譯,如果編譯失敗則拋出語法錯(cuò)誤(SyntaxError)異常。如果編譯成功則開始執(zhí)行這段代碼,并返回字符串中的最后一個(gè)表達(dá)式或語句的值;如果最后一個(gè)表達(dá)式或語句沒有值,則最終返回undefined。如果字符串拋出異常,則該異常將把該調(diào)用傳遞給eval();

eval()最為重要的是,它使用了調(diào)用它的變量作用域環(huán)境,即它查找變量的值和定義新變量和函數(shù)的操作和局部作用域的代碼完全一樣。

eval("var x = 100");
eval("var y = 11");
console.log(x * y); //x * y == 1100
eval("function foo(x){return Math.pow(x,x);}");
console.log(foo(5)); // 25

eval字符串執(zhí)行時(shí)的上下文環(huán)境和調(diào)用函數(shù)的上下文環(huán)境是一樣的,這不能使其作為函數(shù)的一部分來運(yùn)行:

var foo = function(a){
  eval(a);
  };
foo("return;");

以上代碼因?yàn)閳?zhí)行eval(a)的上下文是全局的,在全局上下文中使用return會拋出語法錯(cuò)誤:return not in function.

eval()具有修改局部變量的能力,這對于js優(yōu)化器來說是一個(gè)很大的問題。為了讓js解釋器實(shí)現(xiàn)更加簡化,ECMAScript3標(biāo)準(zhǔn)規(guī)定了任何解釋器都不允許對eval()賦予別名,如果eval()函數(shù)通過別名調(diào)用會拋出一個(gè)EvalError異常。
實(shí)際上大多數(shù)的實(shí)現(xiàn)不是這樣的。當(dāng)通過別名調(diào)用時(shí),eval()會將其字符串當(dāng)成頂層的全局代碼來執(zhí)行。執(zhí)行代碼可能會定義新的全局變量和全局函數(shù),或給全局變量賦值,但卻不能使用或修改主調(diào)用函數(shù)中的局部變量,因此不會影響到函數(shù)內(nèi)部的代碼優(yōu)化。

而在ECMAScript5中,態(tài)度有所不同:反對拋出EvalError異常。在ECMAScript5中當(dāng)直接使用非限定名來調(diào)用eval()函數(shù)時(shí),通常稱為”直接eval(direct eval)”;直接調(diào)用eval()時(shí),總是在調(diào)用它的上下文作用域內(nèi)執(zhí)行。而其他的間接調(diào)用則使用全局對象作為其上下文作用域,且無法讀寫和定義局部變量和函數(shù)。(但實(shí)際我在firebug測試?yán)锇l(fā)現(xiàn),都是修改了全局變量 :( )

需要真正eval來執(zhí)行代碼段的場景并不多見,可能更多的會使用全局eval而不是局部eval。

IE9之前的早期版本IE當(dāng)通過別名調(diào)用eval()時(shí)并不是全局eval,但I(xiàn)E定義了一個(gè)execScript()的全局函數(shù)來完成全局eval的功能(單核eval()稍有不同,execScript()總是返回null)。

ECMAScript5嚴(yán)格模式對eval函數(shù)行為施加了更多的限制。在嚴(yán)格模式下使用eval或eval執(zhí)行代碼以”use strict”指令開始時(shí),eval是私有上下文環(huán)境中的局部eval.此外嚴(yán)格模式將eval列為保留字,這讓eval()更像一個(gè)運(yùn)算符,不能用一個(gè)別名覆蓋eval()函數(shù),并且變量名、函數(shù)名、函數(shù)參數(shù)或者異常捕獲的參數(shù)都不能取名為”eval”.

希望本文所述對大家的javascript程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • js驗(yàn)證是否為數(shù)字的總結(jié)

    js驗(yàn)證是否為數(shù)字的總結(jié)

    js驗(yàn)證是否為數(shù)字的總結(jié),需要的朋友可以參考一下
    2013-04-04
  • JS實(shí)現(xiàn)淘寶支付寶網(wǎng)站的控制臺菜單效果

    JS實(shí)現(xiàn)淘寶支付寶網(wǎng)站的控制臺菜單效果

    這篇文章主要介紹了JS實(shí)現(xiàn)淘寶支付寶網(wǎng)站的控制臺菜單效果,涉及JavaScript基于時(shí)間函數(shù)及數(shù)學(xué)運(yùn)算控制頁面動(dòng)畫彈出菜單效果的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-09-09
  • JavaScript面向?qū)ο笾w會[總結(jié)]

    JavaScript面向?qū)ο笾w會[總結(jié)]

    看過很多JavaScript書,對JavaScript的面向?qū)ο笾v的都比較深入,但是并沒有做到深入淺出,總結(jié)了我做的一些JavaScript程序的經(jīng)驗(yàn),以簡潔明了的文字使大家明白JavaScript面向?qū)ο蟮膶?shí)現(xiàn)。
    2008-11-11
  • JavaScript實(shí)現(xiàn)通過鍵盤彈鋼琴的效果實(shí)例代碼

    JavaScript實(shí)現(xiàn)通過鍵盤彈鋼琴的效果實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于JavaScript實(shí)現(xiàn)通過鍵盤彈鋼琴效果的相關(guān)資料,通過JS代碼實(shí)現(xiàn)了鋼琴鍵盤的交互效果,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • IScroll那些事_當(dāng)內(nèi)容不足時(shí)下拉刷新的解決方法

    IScroll那些事_當(dāng)內(nèi)容不足時(shí)下拉刷新的解決方法

    下面小編就為大家?guī)硪黄狪Scroll那些事_當(dāng)內(nèi)容不足時(shí)下拉刷新的解決方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • window.open()詳解及瀏覽器兼容性問題示例探討

    window.open()詳解及瀏覽器兼容性問題示例探討

    這篇文章主要介紹了window.open()的使用及瀏覽器兼容性問題方面的知識,感興趣的朋友可以參考下
    2014-05-05
  • js jquery數(shù)組介紹

    js jquery數(shù)組介紹

    js jquery數(shù)組介紹,數(shù)組時(shí)編程中比較常用的處理,需要的朋友可以參考下
    2012-07-07
  • 小程序怎樣讓wx.navigateBack更好用的方法實(shí)現(xiàn)

    小程序怎樣讓wx.navigateBack更好用的方法實(shí)現(xiàn)

    這篇文章主要介紹了小程序怎樣讓wx.navigateBack更好用的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • js仿淘寶評價(jià)評分功能

    js仿淘寶評價(jià)評分功能

    本文主要介紹了js仿淘寶評價(jià)評分功能——點(diǎn)擊心形生成得分(有半心選擇),具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-02-02
  • 基于element-ui?動(dòng)態(tài)換膚的代碼詳解

    基于element-ui?動(dòng)態(tài)換膚的代碼詳解

    這篇文章主要介紹了element-ui?動(dòng)態(tài)換膚,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03

最新評論

伊通| 长治市| 彩票| 廊坊市| 靖宇县| 上饶市| 永泰县| 巴彦县| 海淀区| 安龙县| 兴国县| 阳高县| 上饶市| 饶平县| 射洪县| 东源县| 高唐县| 泰兴市| 行唐县| 平邑县| 永修县| 阜平县| 枝江市| 科技| 定州市| 天门市| 兴和县| 方城县| 汪清县| 新兴县| 定边县| 怀仁县| 佛冈县| 子洲县| 高阳县| 东台市| 湘潭县| 施秉县| 崇信县| 江西省| 永定县|