1. 函数的声明方式

1.1 function 命令声明

1.2 函数表达式

1.3 Function 构造函数

1.4 第一等公民

  1. 在javascript中,函数和其他数据类型地位平等

    1.5 函数名的提升

  2. 采用function 声明函数的时候,整个函数会提升到代码头部

    2. 函数的属性和方法

    2.1 name属性

  3. name属性返回函数的名字

  4. name属性的用处是获取参数函数的名字 ```javascript var myFunc = function(){};

function test(f) { console.log(f.name); }

test(myFunc); // myFunc ```

2.2 length属性

  1. length属性返回函数预期传入的参数个数
  2. length属性提供了一种机制来判断定义时和调用时参数的差异,以便实现“方法重载”

    2.3 toString()

  3. 函数的toString()方法返回字符串,内容时函数的源码

    3. 函数作用域

  4. es5中只有全局作用域和函数作用域

  5. 函数内部通过var定义的变量也会存在变量提升
  6. 函数本身作用域是静态作用域,即是声明时所在的作用域,而不是调用时的作用域

    4. 参数

  7. 函数参数可省略

  8. 按值传递
  9. arguments对象
    • 通过arguments对象来获取函数运行时的所有参数
    • arguments.length获取函数调用到底传递多少参数
    • arguments只是类数组,可以通过Array.prototype.slice.call(arguments)来转化为数组
    • callee属性:arguments.callee返回对应的原函数;但是在严格模式禁用

      闭包

      立即调用函数