您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)JavaScript 中匿名函數(shù)有什么用,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
同樣都是在運(yùn)行時(shí)才能確定函數(shù),為什么
b
是匿名函數(shù)?
IsAnonymousFunctionDefinition()
用來(lái)判斷一個(gè)函數(shù)是否為匿名函數(shù),但是這個(gè)函數(shù)只在規(guī)范中使用,通過(guò) JS 代碼并不能調(diào)用,很多 JS 引擎會(huì)在內(nèi)部實(shí)現(xiàn)這個(gè)函數(shù)(非強(qiáng)制要求)。name
屬性是 "anonymous"
name
是繼承自
Function.prototype.name
,因此沒(méi)有名字的函數(shù)的
name
屬性是空字符
""
。<anonymous>
,也就是我們經(jīng)常說(shuō)的匿名函數(shù)。var a = () => () => { throw new Error('foo') }
a()()
,還是
var b = a(); b()
,在 Chrome 中執(zhí)行:Global Scope
)b
函數(shù),
a
都不應(yīng)該出現(xiàn)在調(diào)用棧中,我覺(jué)得這應(yīng)該可以算是 FireFox 的一個(gè) bug 了。new Function
定義函數(shù),錯(cuò)誤棧里是沒(méi)有尖括號(hào)的。因?yàn)楦鶕?jù)規(guī)范,使用
Function
定義的函數(shù)是有名字的,名字就是
"anonymous"
。就好比一個(gè)人叫無(wú)名氏,并不是因?yàn)樗麤](méi)有名字,而是他姓無(wú),叫名氏。var a = new Function('throw new Error("bar")')a()
var a = () => () => 1
的函數(shù)名是
a
,而
var b = a()
就是匿名函數(shù)。var a = () => 1
包含了 2 個(gè)階段,箭頭函數(shù)定義和賦值操作。所有的箭頭函數(shù)都是匿名函數(shù),在箭頭函數(shù)的定義中,規(guī)范內(nèi)部的
hasName
屬性直接設(shè)置為了
false
。然后
IsAnonymousFunctionDefinition(expr)
判定此函數(shù)是匿名函數(shù):IsFunctionDefinition
of expr
is false
, return false
.hasName
be HasName of expr.hasName
is true
, return false
.true
.var b = a()
。這個(gè)也包含了賦值操作,還有一個(gè)函數(shù)調(diào)用操作。var a = (1, () => 'foo')a = [() => 1][0]var a = eval('()=>1')
關(guān)于JavaScript 中匿名函數(shù)有什么用就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。