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

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

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

回答
編輯回答
掛念你

你還可以寫成

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

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

clipboard.png

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

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

這個(gè)不存在好與壞之分,重點(diǎn)是為什么這么寫

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

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

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

(function(){})()

(function(){}())

+function(){}()

-function(){}()

~function(){}()

var a = function(){}()

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

因?yàn)楸磉_(dá)式是有返回值,返回值是其結(jié)果

var a,b;//js中的,號(hào)可以連接表達(dá)式
a = 1; //此時(shí)會(huì)返回1
a = (1,2);//此時(shí)會(huì)返回2,因?yàn)?號(hào)可以連接表達(dá)式,表達(dá)式的結(jié)果為2
2018年1月13日 08:00