簡體   English   中英

函數表達式如何在解析器的Javascript中工作?

[英]How do function expressions work in Javascript in the parser?

最近,我了解了這三件事之間的區別:

var a = function() { ... };

function a() { ... };

var a = (function() { ... })(); 

但是,我試圖找出是什么使函數表達式像解析時那樣工作。 據我了解,即是否包含(function() {...})(); 在我的Javascript代碼的一行上,它將立即執行。 這是真的?

如果是這樣,解析器看到該怎么辦? 是因為函數包含在括號中,還是因為附加了括號,還是其他原因? 我在表3.7的MDN文檔中讀到, ()new是調用/創建某事物的新實例的一種方法,因此我可以達到(function() {...})();的相同結果(function() {...})(); 具有new Function(...); (不考慮new Function();接受字符串的事實)。

如果我包含(function() {...})(); 在我的Javascript代碼的一行上,它將立即執行。 這是真的?

是。 它稱為立即執行的函數表達式

是因為函數包含在括號中,還是因為附加了括號,還是其他原因?

括弧對執行沒有意義,實際上,您可以忽略它們 (當在另一個表達式中使用結果 ,可以避免函數聲明與語法的歧義)或將它們放在不同的位置 但是,“附加括號”只是一個簡單的函數調用anything_that_resolves_to_a_function ()

我在表3.7的MDN文檔中讀到,()和new是調用/創建某事物的新實例的一種方法。

是。 但是,您不應該使用new function() { … }

所以我能達到(function() {...})();的相同結果(function() {...})(); 具有new Function(...);

Function構造函數是完全不同的野獸。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM