![](/img/trans.png)
[英]What's the difference between these 2 ways of using a callback in addEventListener?
[英]What's the difference between the following ways of definition in JS?
代碼塊1:
var a = (function(){
var obj = {a:'1',b:'2'};
return obj;
})();
console.log(a);
代碼塊2:
var a = function(){
var obj = {a:'1',b:'2'};
return obj;
}();
console.log(a);
我知道console.log的結果是一樣的。但是在執行過程中有什么區別嗎?
將括號括在函數周圍的唯一效果是確保將其視為函數表達式。
將其作為任務的RHS也具有這種效果。
因此,兩者之間沒有區別。
var a = (function(){
var obj = {a:'1',b:'2'};
return obj;
})();
console.log(a);
該函數是IIFE(立即調用的函數表達式)。
將調用該函數,並將返回的值分配給a
。
在第二個表達式中,只有語法不同,但功能相同。 但作為一種好的做法,將函數包裝在()
是很好的。 如果你只使用下面的代碼,它將給出錯誤。
function(){
var obj = {a:'1',b:'2'};
return obj;
}();
而
(function(){
var obj = {a:'1',b:'2'};
return obj;
}());
和
(function(){
var obj = {a:'1',b:'2'};
return obj;
})();
兩者都不會給出錯誤,因為我們明確地將其定義為表達式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.