Javascript 函数表达式

函数有两种模式:函数定义函数表达式

    函数定义是在任何语言中都会遇见的,这里不再多说了。

    函数表达式: 是作为表达式在代码中出现,当程序运行到此处时,才执行这部分的代码内容。

函数字面量组成部分:

    第一部分,关键词 function
    第二部分,函数名,但是可有可无。
    第三部分,包含在括号内的参数,当然参数也是可有可无的,括号不能少。
    第四部分,是一组包裹在大括号的语句块,也就是函数要执行的具体代码,可以为空。

例如

 function () {}

这个写法符合上面4条规则,但却不是表达式,运行会报语法错误。

只有当作表达式的时候才能正常执行。

 1. (function () {});
 2. var a = function () {};
 3. var obj = {fn: function () {}};

再来看个

var fn = function test() {};

这个也是函数字面量,test 是这个函数的名字,但是只对函数体内可见,外部是不可调用的

var fn = function test() { console.log(test); };
console.log(fn);     // function test() { console.log(test); };
fn();                // function test() { console.log(test); };
console.log(test);   // 报 test 未定义

     这里的函数名可用于内部使用,比如递归调用的时候,会很方便。

为什么不用 arguments.callee 呢。很多地方都可以看到说 arguments 是把双刃剑,是性能杀手,能避免就尽量避免使用。

加一个函数名,调用方便,性能极致,对项目压缩也有好处,何乐而不为呢?

原文地址:https://www.cnblogs.com/king516/p/3795972.html