亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

從(function foo(){})分析JS內(nèi)部究竟如何處理括號操作符

chanthuang / 3047人閱讀

摘要:括號操作符中函數(shù)轉(zhuǎn)換引發(fā)的一次討論。,我認(rèn)為規(guī)范與我的猜測即下圖我這里說的匿名函數(shù)就是當(dāng)前匿名函數(shù)的意思是一致的。

Grouping operator(括號操作符)中函數(shù)轉(zhuǎn)換引發(fā)的一次討論。

起因是群里有朋友提出了這么一個(gè)問題:

于是大家展開了討論??吹竭@個(gè)題目我覺得很有意思,也許你會(huì)想到《你不知道的javascript》中那個(gè)經(jīng)典的例子。查閱一些資料后(這一次查閱主要是找到了這篇文章:函數(shù)表達(dá)式與函數(shù)聲明,這篇文章中也給出了那個(gè)經(jīng)典例子的解答。)。

我將找到的文章中與這題最緊密相關(guān)的一段話截圖發(fā)在了群中:

出現(xiàn)了下面的討論:

到這里,出來了問題的關(guān)鍵點(diǎn),之前的重心放在為什么這個(gè)聲明在外部(無論之前還是之后)都引用不到,通過資料發(fā)現(xiàn)是因?yàn)榘阉馕龀闪艘粋€(gè)匿名函數(shù)表達(dá)式。但是上面這位朋友提出的這個(gè)問題(既然是匿名的,為什么在函數(shù)內(nèi)部可以拿到foo這個(gè)引用),引發(fā)了我進(jìn)一步的思考。然后跑步去了- -,回來后繼續(xù)查閱,如下:

這里圖太小,補(bǔ)充說明下,我發(fā)的圖片是這張:(出自ES5的規(guī)范: 函數(shù)表達(dá)式規(guī)范)

我認(rèn)為規(guī)范已經(jīng)說的很明白了,即“在函數(shù)表達(dá)式中的函數(shù)名只能被函數(shù)內(nèi)部引用到,出了內(nèi)部這個(gè)作用域,其他任何地方都無法直接引用?!?, 我認(rèn)為規(guī)范與我的猜測(即下圖)

(PS:我這里說的匿名函數(shù)就是當(dāng)前匿名函數(shù)的意思))

是一致的。我認(rèn)為這兩者基本等價(jià)。

But, 那位朋友說:

PS:圖太小了,他發(fā)的圖片是這張:

上圖和下圖都包含了我的回復(fù)

PS: 這里我說的在內(nèi)部定義,我想表達(dá)的意思準(zhǔn)確來說是在內(nèi)部的第一行定義,類似于JAVA在構(gòu)造函數(shù)中調(diào)用父類構(gòu)造函數(shù)只能在第一行,我的意思就是這種現(xiàn)象等價(jià)于他隱式在第一行定義了foo為當(dāng)前匿名函數(shù)。

但是這位朋友非要說這有本質(zhì)的區(qū)別(見下圖),我實(shí)在是沒辦法繼續(xù)說下去了。。(PS:無關(guān)內(nèi)容(關(guān)于其他問題的討論)被我馬賽克掉了)

所以最后,希望大家發(fā)表自己的看法,無論有何種觀點(diǎn),都?xì)g迎和大家討論~

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/80534.html

相關(guān)文章

  • Functions

    摘要:如果我們把這樣的定義放在全局代碼中,解析器會(huì)把函數(shù)當(dāng)作聲明,因?yàn)樗躁P(guān)鍵字開頭,在第一種情況中,我們會(huì)得到,因?yàn)槲覀內(nèi)鄙俸瘮?shù)名。 原文 ECMA-262-3 in detail. Chapter 5. Functions. 簡介 在這篇文章中,我們將討論一個(gè)ESCMAScript對象,函數(shù)。我們將討論不同類型的函數(shù),每個(gè)類型是如何影響環(huán)境中的變量對象(variables object)...

    sydMobile 評論0 收藏0
  • JavaScript深入之執(zhí)行上下文棧

    摘要:深入系列第三篇,講解執(zhí)行上下文棧的是如何執(zhí)行的,也回答了第二篇中的略難的思考題。 JavaScript深入系列第三篇,講解執(zhí)行上下文棧的是如何執(zhí)行的,也回答了第二篇中的略難的思考題。 順序執(zhí)行? 如果要問到 JavaScript 代碼執(zhí)行順序的話,想必寫過 JavaScript 的開發(fā)者都會(huì)有個(gè)直觀的印象,那就是順序執(zhí)行,畢竟: var foo = function () { ...

    codecraft 評論0 收藏0
  • 深入解JavaScript系列2:揭秘命名函數(shù)表達(dá)式

    摘要:標(biāo)識(shí)符有效性正是導(dǎo)致函數(shù)語句與函數(shù)表達(dá)式不同的關(guān)鍵所在下一小節(jié)我們將會(huì)展示命名函數(shù)表達(dá)式的具體行為。歸根結(jié)底,只有給函數(shù)表達(dá)式取個(gè)名字,才是最穩(wěn)妥的辦法,也就是使用命名函數(shù)表達(dá)式。 前言 網(wǎng)上還沒用發(fā)現(xiàn)有人對命名函數(shù)表達(dá)式進(jìn)去重復(fù)深入的討論,正因?yàn)槿绱耍W(wǎng)上出現(xiàn)了各種各樣的誤解,本文將從原理和實(shí)踐兩個(gè)方面來探討JavaScript關(guān)于命名函數(shù)表達(dá)式的優(yōu)缺點(diǎn)。簡單的說,命名函數(shù)表達(dá)式只有...

    chenjiang3 評論0 收藏0
  • JavaScript中的內(nèi)存泄漏以及何處

    摘要:本文將會(huì)討論中的內(nèi)存泄漏以及如何處理,方便大家在使用編碼時(shí),更好的應(yīng)對內(nèi)存泄漏帶來的問題。當(dāng)內(nèi)存不再需要時(shí)進(jìn)行釋放大部分內(nèi)存泄漏問題都是在這個(gè)階段產(chǎn)生的,這個(gè)階段最難的問題就是確定何時(shí)不再需要已分配的內(nèi)存。中的相同對象稱為全局。 隨著現(xiàn)在的編程語言功能越來越成熟、復(fù)雜,內(nèi)存管理也容易被大家忽略。本文將會(huì)討論JavaScript中的內(nèi)存泄漏以及如何處理,方便大家在使用JavaScript...

    itvincent 評論0 收藏0
  • You Don't Know Js 閱讀筆記

    摘要:回調(diào)傳遞函數(shù)是將函數(shù)當(dāng)做值并作為參數(shù)傳遞給函數(shù)。這個(gè)例子中就是因?yàn)槭录壎C(jī)制中的傳入了回調(diào)函數(shù),產(chǎn)生了閉包,引用著所在的作用域,所以此處的數(shù)據(jù)無法從內(nèi)存中釋放。 javascript作用域 一門語言需要一套設(shè)計(jì)良好的規(guī)則來存儲(chǔ)變量,并且之后可以方便的找到這些變量,這逃規(guī)則被稱為作用域。 這也意味著當(dāng)我們訪問一個(gè)變量的時(shí)候,決定這個(gè)變量能否訪問到的依據(jù)就是這個(gè)作用域。 一、詞法作用域 ...

    wanglu1209 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<