JavaScript如何使用Function()構(gòu)造函數(shù)

這篇文章主要介紹JavaScript如何使用Function()構(gòu)造函數(shù),文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、江油網(wǎng)絡(luò)推廣、微信小程序定制開發(fā)、江油網(wǎng)絡(luò)營(yíng)銷、江油企業(yè)策劃、江油品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供江油建站搭建服務(wù),24小時(shí)服務(wù)熱線:18980820575,官方網(wǎng)址:muchs.cn

Function()構(gòu)造函數(shù)

先看代碼:

var f = new Function("x","y","return x+y"); //Function()構(gòu)造函數(shù)
var f = function(x,y){return x+y}; //這兩條代碼是等價(jià)的

通過(guò)這個(gè)方法我們可以傳入任意數(shù)量的字符串實(shí)參,而且最后一個(gè)實(shí)參所表示的文本是函數(shù)體,這個(gè)方法它是可以包含任意數(shù)量的JavaScript語(yǔ)句的,而且在使用的時(shí)候如果構(gòu)造的函數(shù)不包含任何參數(shù)的話,我們只需要輸入一個(gè)函數(shù)就可以了。這個(gè)方法和其他兩個(gè)方法是不一樣的,這個(gè)方法是允許JavaScript在運(yùn)行的時(shí)候動(dòng)態(tài)地創(chuàng)建翻譯函數(shù),而且我們每次在調(diào)用這個(gè)方法的時(shí)候函數(shù)都會(huì)進(jìn)行解析函數(shù)體。所以在多次使用或者循環(huán)使用的話,效率是會(huì)受到影響的。相比之下循環(huán)中的嵌套函數(shù)和函數(shù)定義表達(dá)式就不會(huì)每次執(zhí)行的時(shí)候進(jìn)行重新編譯。

對(duì)于這個(gè)構(gòu)造函數(shù)還有一點(diǎn)是值得我們注意的,那就是它所創(chuàng)建的函數(shù)并不是使用詞法作用域,都因?yàn)楹瘮?shù)體代碼在編譯的時(shí)候總在頂層函數(shù)執(zhí)行,代碼如下所示:

var a = 3; //在頂層函數(shù)中聲明變量a
function f(){
var a = 2; //在函數(shù)體內(nèi)聲明局部變量a
return new Function("return a*a;"); //無(wú)法捕獲局部作用域
}
console.log(f()()); //控制臺(tái)輸出9而非4,說(shuō)明構(gòu)造函數(shù)的編譯在頂層函數(shù)執(zhí)行

那么對(duì)于這個(gè)問題我們可以在全局作用域中進(jìn)行執(zhí)行eval()。

以上是“JavaScript如何使用Function()構(gòu)造函數(shù)”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

文章題目:JavaScript如何使用Function()構(gòu)造函數(shù)
分享路徑:http://muchs.cn/article30/ihdpso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)網(wǎng)站內(nèi)鏈、定制開發(fā)、App開發(fā)、用戶體驗(yàn)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)