变量,作用域,内存
1,原始值和引用值:基本数据类型值在栈区,引用数据类型栈区是一个地址,值储存在堆区
2,涉及问题:深拷贝与浅拷贝
深拷贝npm i -save lodash,安装clonedeep
方法一:将引用类型下所有的数据全部递归复制一遍
方法二:cloneDeep:深拷贝函数
import _ from ‘lodash’
this.dataList = _.cloneDeep(res.data);
浅拷贝
let arr = [1,2,3,4];
let arr1 = […arr];
或
let arr2 = arr;
3,基本类型用 typeof关键字检测;引用类型用instanceof 检测。
4,执行上下文和作用域:用途是: 保证(对执行环境有权访问的)所有变量和函数的有序访问。
1)每个上下文都有一个关联的变量对象。
2)上下文代码执行的时候会创建变量对象的作用域链。作用域链决定了各级上下文中的代码在访问变量和函数的顺序。
3)如果上下文是函数,则其活动对象用作变量对象。
作用域链的前端,始终都是当前执行的代码所在环境的变量对象。如果这个环境是函数,则将其活动对象(activation object)作为变量对象(即arguments对象)。
作用域链中的下一个变量对象来自外部环境(有可能还是函数),而再下一个变量对象同样来自下一个外部环境,一直延续到全局执行环境(最后一个变量对象)。
JS的变量, 就根据作用域链来查找, 如果一直到全局环境都找不到,