函数后有无括号
通俗点说 :
1, 有括号, 函数会立即执行, 然后返回结果;
2, 无括号, 会将函数 作为"对象"赋值给你的变量 .
写个简单的小例子:
//结果:
function test() {
return 11;
}
var a = test;
var b = test();
console.log('a --->'+ (a === test)); //true
console.log('a --->'+ a); //function test() {return 11;}
console.log('b --->'+ b); //11
函数上有无括号
function a(){}(函数声明)
返回undefined(不会执行),仅仅是函数声明(声明提前)
var res = function a(){}() (函数表达式)
立即执行该函数,必须使用一个变量接收返回值,否则报错
(function a(){})() (函数表达式)
立即执行该函数,不必须使用变量接收
function test1(){ alert('test1执行了');return 1;} //不执行
var test2 = function test2(){ alert('test2执行了');return 2;}()//立即执行
var test3 = (function test3(){alert('test3执行了');return 3;})()//立即执行