在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 立即執(zhí)行函數(shù)一般的寫法是(()=>{})()這種,看到有人這么寫(0,()

立即執(zhí)行函數(shù)一般的寫法是(()=>{})()這種,看到有人這么寫(0,()=>{})(),想問下后面這種寫法是有什么好處嗎?

立即執(zhí)行函數(shù)一般的寫法是(()=>{})()這種,看到有人這么寫(0,()=>{})(),想問下后面這種寫法是有什么好處嗎?謝謝!

回答
編輯回答
掛念你

你還可以寫成

(true,"今天好涼快",3.1415926,["草稿紙"],new Map(),()=>{console.log("阿嚏")})()

說正經(jīng)的就是js逗號運算符按順序執(zhí)行表達式,并且獲得最右邊表達式的值

clipboard.png

好處?也許是能把人忽悠瘸吧(順帶執(zhí)行最后一個逗號之前的表達式唄)

2017年8月12日 10:17
編輯回答
孤星

這個不存在好與壞之分,重點是為什么這么寫

在js中,函數(shù)聲明會被提前,所以在函數(shù)聲明后加上()立即調(diào)用會拋出語法錯誤

functuion (){}()
//Uncaught SyntaxError: Unexpected token {

所以我們想讓函數(shù)在代碼的位置上才被處理,可以把函數(shù)變成函數(shù)表達式,下面舉幾個例子

(function(){})()

(function(){}())

+function(){}()

-function(){}()

~function(){}()

var a = function(){}()

上面的第一種寫法和你問題中提到的兩個寫法是一樣的,為什么說你提到的第二個和第一個是一樣的?

因為表達式是有返回值,返回值是其結(jié)果

var a,b;//js中的,號可以連接表達式
a = 1; //此時會返回1
a = (1,2);//此時會返回2,因為,號可以連接表達式,表達式的結(jié)果為2
2018年1月13日 08:00