js中函数名,实际可以看成是一个函数指针
即
function a() {}
的定义,等同于
var a = function() {}
a是变量, function() {}称为匿名函数,a引用这个匿名函数。
或者,还可以这样定义
var a = new Function('func body');
使用a和使用其他变量一样,所以当要执行a所指向的函数时,就可以用括号来调用这个函数a();
lz第一个script中,a函数运行后返回b,b是函数指针,仅仅只是返回而已,并没有被执行
第二个script中,a函数运行后返回b给c,b和c都指向同一个函数,所以运行c后,等到想要的结果。
另外,变量只是起到引用左右,匿名函数在定义后可以直接执行,即
(function() {})();
等价于
var a = fucntion() {};
a();
不过要注意,直接运行匿名函数,函数外的一对括号不能少,之后再跟上一对括号用于执行。