#函数高级
Posted keepitreal
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#函数高级相关的知识,希望对你有一定的参考价值。
##一.执行上下文--代码的运行环境 保存到栈中 (特点:先进后出)
1.分类
-全局上下文
-局部上下文(函数上下文)
-- 全局上下文在浏览器打开时产生,浏览器关闭时销毁
--局部上下文在函数调用时产生,函数结束时关闭
--------------------
#二.变量对象;上下文的创建阶段,其内部还同时创建了一个“变量对象”
1.查找 arguments 对象 (找参数)
2.找当前这个上下文的所有声明式函数
3.查找所有var声明的变量
保存数据的容器
#三.建立作用域链
最先找自己家的变量对象 --> 下一个要看上一个哪儿创建的
//作用域链上的每一个变量对象,它的后一个变量对象,是当前变量对象的函数声明时所在的上下文的变量对象
例如: function fn1(){
var a=1;
function fn2(){
var b=2;
function fn3(){
var b=3;
}
function fn4(){
var c=5;
console.log(a+b+c);
}
fn3();
fn4();
}
fn2();
}
fn1();
#四.闭包 : 由于程序检测到后面还是要使用到函数体内部的数据,所以销毁函数的时候还会留下数据
1.扩大了作用范围,延长了作用时间
2.避免变量污染
#五:递归函数
let arr = [[1, 2, 3], 4, 5, 6, [7, 8, [9, 11]], 10];
function fn(arr) {
for (let i = 0; i < arr.length; i++) {
//要把第一数组遍历出来
if (typeof arr[i] == "object") {
// for (let j = 0; j < arr[i].length; j++) {
// console.log(arr[i][j]);
// }
fn(arr[i]);
} else {
console.log(arr[i]);
}
}
}
fn(arr);
以上是关于#函数高级的主要内容,如果未能解决你的问题,请参考以下文章