函数定义
区别
用函数声明方式定义一个函数时
1.函数会被前置
2.只有最后一次定义是有效的
用函数实例化方式定义函数时
定义的函数只能访问本地作用域和全局作用域
函数调用
函数调用模式
this指向全局变量
方法调用模式
this指向调用者
构造函数调用模式
this指向被构造的对象
apply(call)调用模式
this指向第一个参数
Array-like
arguments[index] 获取函数实参
arguments.length 获取函数实参个数
函数传参
按值传递
基本类型外部变量传入函数中的只是副本,函数中进行的操作不会影响外部变量。
按共享传递
闭包
当function里嵌套function时,内部的function可以访问外部function里的变量
功能
保存函数执行状态
封装
性能优化
first-class function
JS上的函数可以当做普通变量使用
功能
函数作为参数
函数作为返回值