变量
变量的定义
什么是变量
一段字符可随时变化的
1 声明变量
var function
2 给变量赋值
变量名 赋值运算符 ++ –
给哪里的哪个变量当前赋值是什么
3 使用变量
难点:使用哪里的变量,当前变量的赋值是什么?
作用
存放数据
使用变量的规则是什么?
- 判断使用的哪一个变量
- 使用的是什么
在当前的作用域中查找,看是否声明,如果声明,那找最近的一次赋值
作用域
规定了变量在哪里用,就是作用域
作用域是在代码运行时代码中的某些特定部分中的变量,函数和对象的可访问性。作用域决定了代码区域中变量和其他资源的可见性。
- 作用
作用域最大的用处就是隔离变量,不同作用域下同名变量不会有冲突。
- 分类:
- 全局作用域
在代码中任何地方都能访问到的对象拥有全局作用域;
所有的 window 对象拥有全局作用域。 - 局部作用域
局部作用域中使用的是局部变量,当没有使用全局的,全局变量可以在任何局部中使用,局部中的只能在自己的区域内使用。
深拷贝和浅拷贝
- 深拷贝
深拷贝后的数据改变或者被拷贝的数据改变,彼此都不会发生改变,双方是独立存在的。基本数据类型基本上都为深拷贝。
浅拷贝后的数据改变会影响到拷贝后的数据,靠背后的数据也会发生改变。引用数据类型基本上为浅拷贝。 - 封装递归深拷贝
function deepCopy(obj) {
var newObj;
//判断是否为普通数据类型
if (!(obj instanceof Object)) {
newObj = obj;
return newObj;
}
//判断是否为对象
if (obj.constructor === Object) {
newObj = {};
}
//判断是否为数组
if (Array.isArray(obj)) {
newObj = [];
}
//遍历
for (var k in obj) {
newObj[k] = deepCopy(obj[k]);
}
return newObj;
}