函数的要素
调用时机
时机不同,结果不同
作用域
全局变量 与 局部变量
window上的变量 与 顶级作用域 上的变量属于全局变量,其他都是局部变量
就近原则
闭包
JS函数会用到最近的外面的函数
如果一个函数用到了外面的变量,这个函数加这个变量叫做闭包
闭包
形式参数
形参不是实际参数,是用来区分、
形参可认为是变量声明
返回值
每个函数都有返回值
执行后才有返回值
不写return也有返回值undifined
调用栈
js在调用函数前,会把函数所在的环境push到一个数组中,数组叫调用栈。
函数调用完后,弹出(POP)到之前的环境,继续执行。
箭头函数
箭头函数没有this和argument
不有通过call,bind等来指定绑定this,永远和外层一样的this,自己无this
立即执行函数
出来的环境是 为了拥有局部变量,通过申明一个变量,在函数里面定义局部变量
但是会多出来个全局函数,相当于又来了个弊端
所以用匿名函数来包裹局部变量,并立即进行执行,不会多一个
但传统函数形式会报错,程序员们发现在前面加个操作符就不会报错,所以所有立即执行函数的格式但生成了,比如加括号或感叹号(推荐)
