![](/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.