eval() 和 new function()

eval()和new function()的功能基本相似:將字符串解析成js可以看懂的語(yǔ)言,即將字符串當(dāng)做代碼來(lái)執(zhí)行(動(dòng)態(tài)解析和執(zhí)行字符串)统屈。

基本使用:
     var str='{a:1,b:2,c:3}';
    console.log(eval('('+str+')').c);
    var str="{a:1, b:2, a:3}";
    var show=new Function("return"+str)();
    console.log(show.b);

需要注意的是:使用eval讀json的時(shí)候必須加上帶有引號(hào)的括號(hào)和字符串拼接仑荐,否則將會(huì)報(bào)錯(cuò)码俩。使用new Function()的時(shí)候也不能忘了將return拼接進(jìn)去昙衅,最后的括號(hào)不要忘記了扬霜。

區(qū)別:

1、作用域不同而涉。在以下例子中eval()和new Function()同樣都是解析的字符串str1著瓶,但是結(jié)果卻是不一樣,eval訪問(wèn)的是局部變量啼县,new Function則訪問(wèn)的是全局變量蟹但。

    var str = "111";
    function show(){
        var str = "222";
        var str1 = "console.log(str)";
        eval(str1);//222
        new Function("return " + str1)();//111 注:因?yàn)閞eturn后面的語(yǔ)句要執(zhí)行所以在    return后面加上空格
    }
    show();

2、eval可以改變?cè)瓉?lái)存在的變量值谭羔,new Function不能改變,因?yàn)関ar a = "999";是函數(shù)內(nèi)部的局不變量麦向,不會(huì)影響到全局的變量值瘟裸。

    var a = "666";
    eval("var a = '888';");
    console.log(a);

    new Function("var a = '999';")();
    console.log(a);
性能:

在執(zhí)行速度上eval相對(duì)快一點(diǎn),但是經(jīng)過(guò)上面的分析new Function相對(duì)安全诵竭,建議使用话告。

        var str='{a:1,b:2,c:3}';
        var timeS = Date.now();
        for(var i = 0;i < 10000;i++){
            eval('('+str+')');
        }
        var timeE = Date.now();
        console.log(timeE - timeS);//202(Google)  1251(FF)  8(IE11)

        var str='{a:1,b:2,c:3}';
        var timeS = Date.now();
        for(var i = 0;i < 10000;i++){
            new Function("return " + str)();
        }
        var timeE = Date.now();
        console.log(timeE - timeS);//271(Google)  2057(FF)  12(IE11)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市卵慰,隨后出現(xiàn)的幾起案子沙郭,更是在濱河造成了極大的恐慌,老刑警劉巖裳朋,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件病线,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)送挑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門绑莺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人惕耕,你說(shuō)我怎么就攤上這事纺裁。” “怎么了司澎?”我有些...
    開(kāi)封第一講書人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵欺缘,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我挤安,道長(zhǎng)谚殊,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任漱受,我火速辦了婚禮络凿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘昂羡。我一直安慰自己絮记,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布虐先。 她就那樣靜靜地躺著怨愤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蛹批。 梳的紋絲不亂的頭發(fā)上撰洗,一...
    開(kāi)封第一講書人閱讀 51,737評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音腐芍,去河邊找鬼差导。 笑死,一個(gè)胖子當(dāng)著我的面吹牛猪勇,可吹牛的內(nèi)容都是我干的设褐。 我是一名探鬼主播,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼泣刹,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼助析!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起椅您,我...
    開(kāi)封第一講書人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤外冀,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后掀泳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體雪隧,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡西轩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了膀跌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片遭商。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖捅伤,靈堂內(nèi)的尸體忽然破棺而出劫流,到底是詐尸還是另有隱情,我是刑警寧澤丛忆,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布祠汇,位于F島的核電站,受9級(jí)特大地震影響熄诡,放射性物質(zhì)發(fā)生泄漏可很。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一凰浮、第九天 我趴在偏房一處隱蔽的房頂上張望我抠。 院中可真熱鬧,春花似錦袜茧、人聲如沸菜拓。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)纳鼎。三九已至,卻和暖如春裳凸,著一層夾襖步出監(jiān)牢的瞬間贱鄙,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工姨谷, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留逗宁,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓梦湘,卻偏偏與公主長(zhǎng)得像瞎颗,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子践叠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 原文地址:http://www.2ality.com/2014/01/eval.html原文作者:Dr. Axel...
    若邪Y閱讀 13,471評(píng)論 1 11
  • 第5章 引用類型(返回首頁(yè)) 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,237評(píng)論 0 4
  • 第一章: JS簡(jiǎn)介 從當(dāng)初簡(jiǎn)單的語(yǔ)言,變成了現(xiàn)在能夠處理復(fù)雜計(jì)算和交互嚼蚀,擁有閉包禁灼、匿名函數(shù), 甚至元編程等...
    LaBaby_閱讀 1,674評(píng)論 0 6
  • 一僻孝、關(guān)鍵詞:拖延癥。 網(wǎng)絡(luò)文學(xué)作家唐家三少守谓,想必很多網(wǎng)絡(luò)文學(xué)愛(ài)好者都很熟悉穿铆,在某媒體的一次采訪中得知,雖然他已經(jīng)站...
    上成讀書閱讀 272評(píng)論 0 3
  • 出門逛街斋荞,看著她們樂(lè)此不疲的試著美美的衣服荞雏,就感覺(jué)自己從來(lái)沒(méi)有這么漢子過(guò),沒(méi)辦法平酿,都是一群特別可愛(ài)的小女生凤优。 曾經(jīng)...
    木子不愛(ài)糖閱讀 1,044評(píng)論 0 1