有意思,看代码:
1、写法一
var j1 = (function (){
return {name:'zhang3'};
})();
- 1
- 2
- 3
2、写法二
var j2 = function (){
return {name:'li4'};
}();
//注意直接这样写不会运行:
function (){
return {name:'li4'};
}();
//所以一定要在赋值语句才会运行,但写法一即使没有赋值,单单右边也可以运行!
//但是在外层加个括号又可以,我快崩溃了!真是又爱又恨!
(function (){
return {name:'li4'};
}());
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
3、写法三
var j3 = new function (){
return {name:'wang5'};
};
alert(j1.name + "," + j2.name + "," + j3.name);//显示zhang3,li4,wang5
- 1
- 2
- 3
- 4
- 5
- 6
可见
1、(function(){})()
2、(function(){}())
3、new function(){}
- 1
- 2
- 3
基本是等价的,都是运行一个函数。可能new的功能更强一些,除了运行函数,还获得了这个函数实例。