1. return
2. 调用自身形成递归
3. 无重载
4. **参数传递**方式
5. **arguments对象**
arguments不是真正的数组,对象除了可以读取参数,还可以为参数赋值(严格模式不允许这种用法)。
有length 和callee属性;
之前用arguments的地方可以被es6的解构和==rest==给取代了
>函数本身也是一个值,也有自己的作用域。它的作用域与变量一样,就是其声明时所在的作用域,与其运行时所在的作用域无关。
>所以才需要参数啊,数值都基于参数;
3.==闭包== :内部函数可以读取外部函数的局部变量,把此内部函数返回,就可以在外部读取其内部变量。
**闭包作用**: 读取函数内部的变量,一直保持在内存中,二是 使得其诞生环境一直存在;
原因就在于f1是f2的父函数,而f2被赋给了一个全局变量,这导致f2始终在内存中,而f2的存在依赖于f1,因此f1也始终在内存中,不会在调用结束后,被垃圾回收机制回收。
1234567891011
function f1(num){ console.log(num) return function f2 (){ console.log(num++) }}var out=add(3)out()// 3,3out()//4
另一个for循环的
|
|