[英]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.