1. 函数的声明方式
1.1 function 命令声明
1.2 函数表达式
1.3 Function 构造函数
1.4 第一等公民
在javascript中,函数和其他数据类型地位平等
1.5 函数名的提升
采用function 声明函数的时候,整个函数会提升到代码头部
2. 函数的属性和方法
2.1 name属性
name属性返回函数的名字
- name属性的用处是获取参数函数的名字
```javascript
var myFunc = function(){};
function test(f) {
console.log(f.name);
}
test(myFunc); // myFunc
```
2.2 length属性
- length属性返回函数预期传入的参数个数
length属性提供了一种机制来判断定义时和调用时参数的差异,以便实现“方法重载”
2.3 toString()
函数的toString()方法返回字符串,内容时函数的源码
3. 函数作用域
es5中只有全局作用域和函数作用域
- 函数内部通过var定义的变量也会存在变量提升
函数本身作用域是静态作用域,即是声明时所在的作用域,而不是调用时的作用域
4. 参数
函数参数可省略
- 按值传递
- arguments对象
- 通过arguments对象来获取函数运行时的所有参数
- arguments.length获取函数调用到底传递多少参数
- arguments只是类数组,可以通过Array.prototype.slice.call(arguments)来转化为数组
- callee属性:arguments.callee返回对应的原函数;但是在严格模式禁用
闭包
立即调用函数