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

Eval and new funciton not the same thing

 更新時間:2012年12月27日 15:32:22   投稿:mdxy-dxy  
以前有人會說,new Function的方式是幾乎與eval相等,今天我查了一下,確實是不同的東西,說這句話的人太不負(fù)責(zé)了。關(guān)于eval和new function,得到的結(jié)果都是一致的,都會叫你不要去使用它們。所以結(jié)論就是“不得不”才使用

1、函數(shù)聲明式

復(fù)制代碼 代碼如下:

function foo(){
//code
}

在JS中,函數(shù)也是對象,函數(shù)對象連接到Function.prototype( Function.prototype連接到Object.prototype)
2、函數(shù)字面量式
復(fù)制代碼 代碼如下:

var foo = function foo(){
//code
}

對象擁有一個連到原型對象的隱藏連接。對象字面量間生的對象連接到Object.prototype。 foo.__proto__ == Function.prototype
3、使用New的構(gòu)造函數(shù)生成

new Function ([arg1[, arg2[, ... argN]],] functionBody);

每次執(zhí)行都生成新的函數(shù)
網(wǎng)上的資料有很多介紹這三種模式的,前2種幾乎是相同的,基于相同的詞法作用域。

詞法作用域:變量的作用域是在定義時決定而不是執(zhí)行時決定,也就是說詞法作用域取決于源碼,通過靜態(tài)分析就能確定,因此詞法作用域也叫做靜態(tài)作用域。 with和eval除外,所以只能說JS的作用域機(jī)制非常接近詞法作用域(Lexical scope)。
突然感覺有點離題了,這篇文章其實是記錄eval和New Function的區(qū)別,下面回歸正題:

以前有人會說,new Function的方式是幾乎與eval相等,今天我查了一下,確實是不同的東西,說這句話的人太不負(fù)責(zé)了。關(guān)于eval和new function,得到的結(jié)果都是一致的,都會叫你不要去使用它們。所以結(jié)論就是“不得不”才使用。

eval() evaluates a string as a JavaScript expression within the current execution scope and can access local variables.
new Function()parses the JavaScript code stored in a string into a function object, which can then be called. It cannot access local variables because the code runs in a separate scope.
從以上2點看出,eval的作用域是現(xiàn)行的作用域,而new Function是動態(tài)生成的,它的作用域始終都是window。并且,eval可以讀到本地的變量,new Function則不能。
復(fù)制代碼 代碼如下:

function test() {
var a = 11;
eval('(a = 22)'); //如果是new Function('return (a = 22);')(); a的值是不會覆蓋的。
alert(a); // alerts 22
}

所以一般eval只用于轉(zhuǎn)換JSON對象,new Function也有特殊的用途,只是在不清楚的情況下還是少用為妙。

這里作個備份:

代碼:
復(fù)制代碼 代碼如下:

// 友善提醒:為了你的手指安全,請在Chrome下運(yùn)行
'alert("hello")'.replace(/.+/, eval);
'alert("hello")'.replace(/.+/, function(m){new Function(m)();});

var i = 0; eval(new Array(101).join('alert(++i);'));
var i = 0; new Function(new Array(101).join('alert(++i);'))();

相關(guān)文章

  • js實現(xiàn)兼容IE和FF的上下層的移動

    js實現(xiàn)兼容IE和FF的上下層的移動

    本來是很簡單的一個功能,可是一開始弄的時候,還有IE能實現(xiàn),F(xiàn)F總是不能實現(xiàn),在網(wǎng)上看了半天,也沒弄出個所以然,所以在同事的幫忙下,總算弄出來了,瀏覽器的兼容性考的還是細(xì)節(jié)上面的東西,所有關(guān)于細(xì)節(jié)的,我會用注釋標(biāo)出來的。
    2015-05-05
  • 13個PHP函數(shù)超實用

    13個PHP函數(shù)超實用

    這篇文章為大家整理了13個PHP函數(shù)超實用,函數(shù)是PHP如此強(qiáng)大的源泉,但是很多PHP函數(shù)并沒有得到充分的利用,本文的13個PHP函數(shù)大家一定要真正掌握。
    2015-10-10
  • 關(guān)于Ext中form移除textfield方法:hide(),setVisible(false),remove()

    關(guān)于Ext中form移除textfield方法:hide(),setVisible(false),remove()

    根據(jù)條件來控制是否顯示form里的textfield表單
    2010-12-12
  • Js+Flash實現(xiàn)訪問剪切板操作

    Js+Flash實現(xiàn)訪問剪切板操作

    最近需要遇到了這個問題點擊按鈕復(fù)制鏈接的功能果斷度娘谷哥,最后找到得解決方案ZeroClipBoard一款開源得js+Flash實現(xiàn)得剪切板操作
    2012-11-11
  • 微信小程序?qū)崿F(xiàn)客服功能(客服消息)的全過程

    微信小程序?qū)崿F(xiàn)客服功能(客服消息)的全過程

    在最近做的微信小程序中需要實現(xiàn)一個自帶的客服功能,下面這篇文章主要給大家介紹了關(guān)于微信小程序?qū)崿F(xiàn)客服功能(客服消息)的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • JSON與js對象序列化實例詳解

    JSON與js對象序列化實例詳解

    這篇文章主要介紹了JSON與js對象序列化,結(jié)合實例形式詳細(xì)分析了JavaScript與JSON序列化操作的相關(guān)實現(xiàn)技巧與注意事項,需要的朋友可以參考下
    2017-03-03
  • JavaScript使用math.js進(jìn)行精確計算操作示例

    JavaScript使用math.js進(jìn)行精確計算操作示例

    這篇文章主要介紹了JavaScript使用math.js進(jìn)行精確計算操作,結(jié)合實例形式分析了開源庫math.js進(jìn)行高精度數(shù)學(xué)運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下
    2018-06-06
  • JavaScript股票的動態(tài)買賣規(guī)劃實例分析上篇

    JavaScript股票的動態(tài)買賣規(guī)劃實例分析上篇

    這篇文章主要介紹了JavaScript對于動態(tài)規(guī)劃解決股票問題的真題例舉講解。文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • js Canvas實現(xiàn)圓形時鐘教程

    js Canvas實現(xiàn)圓形時鐘教程

    這篇文章主要為大家詳細(xì)介紹了HTML5 Canvas實現(xiàn)圓形時鐘簡易教程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • 解決layui的table.checkStatus失效問題

    解決layui的table.checkStatus失效問題

    這篇文章主要介紹了解決layui的table.checkStatus失效問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10

最新評論

扶风县| 潜江市| 买车| 滦平县| 鸡东县| 阿图什市| 台北市| 乌苏市| 南丹县| 庐江县| 卢湾区| 甘泉县| 嘉善县| 凤翔县| 鄂托克旗| 晋江市| 定日县| 扎鲁特旗| 宜兴市| 沧州市| 石家庄市| 罗源县| 东明县| 同仁县| 班玛县| 英德市| 漳州市| 同德县| 灌阳县| 赣榆县| 正安县| 辉县市| 湘潭县| 林芝县| 郴州市| 丰原市| 松滋市| 轮台县| 开化县| 教育| 红安县|