日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
你需要深入了解一下JavaScript的newFunction

1、語法

語法如下:

創(chuàng)新互聯(lián)長期為超過千家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為愛輝企業(yè)提供專業(yè)的成都做網(wǎng)站、成都網(wǎng)站設(shè)計、成都外貿(mào)網(wǎng)站建設(shè),愛輝網(wǎng)站改版等技術(shù)服務(wù)。擁有十余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

let func = new Function ([arg1, arg2, …argN], functionBody);

最后一個參數(shù)必須是函數(shù)體,其余參數(shù)作為傳遞給函數(shù)體的參數(shù)。

例如:

let sum = new Function('a', 'b', 'return a + b');
console.log(sum(1, 2)); // the result is 3

我們平時開發(fā) JavaScript 或者 Node.js 的時候,沒有理由使用 new Function 構(gòu)造函數(shù),因為不需要直接使用函數(shù)或者 () => {} 箭頭函數(shù)。

這是否意味著 new Function 語法是一個雞肋的功能?

千萬不要這樣想! 因為它絕對不是你想的那樣!

new Function 語法有一個特別強大的特性,使它在 JavaScript 中發(fā)揮著不可替代的作用。

有什么特點?也就是函數(shù)體的數(shù)據(jù)格式是字符串,真是不可思議!

不可替代的角色

這里有幾個例子來展示 new Function 語法的微妙之處。

1).無效的 JSON 對象字符串合法化

例如,有以下字符串:

let str = `{ "id": 103, name: 'yh', 'date': '2022–07–06' }`;

其中的字符串不符合JSON格式(鍵值需要雙引號),使用JSON.parse()解析會報錯。

那么,有沒有什么辦法可以把這個字符串對象轉(zhuǎn)換成可以解析的JSON呢?

很多人會想到正則匹配然后替換,或者使用eval等渣屬性進行處理。

沒必要這么麻煩, new Function 上線了,就完美了!

JS 代碼如下所示:

console.log(JSON.stringify(new Function('return ' + str)()));
// The return result is: '{"id":10393,"name":"yh","date":"2022–07–06"}'

使用返回語法,你可以輕松地將任意字符串轉(zhuǎn)換為其他 JavaScript數(shù)據(jù)類型。

2).模板字符串作為模板

比如Vue、React等現(xiàn)在都有自己的模板語法,比如{}語法。

如果我們想直接使用 ES6 自己的語法作為模板語言,就必須使用 new Function 的能力,比如下面的 HTML:

我們可以擴展字符串并定義一個名為 interpolate 的字符串方法來將 ES6 語法字符串轉(zhuǎn)換為可執(zhí)行的 ES6 代碼:

String.prototype.interpolate = function (params) {
const names = Object.keys(params);
const vals = Object.values(params);return new Function(…names,`return \`${this}\`;`)(…vals);
};

至此,只要有對應(yīng)的數(shù)據(jù),我們就可以根據(jù)