变量的作用域解析,深拷贝浅拷贝

变量

变量的定义

什么是变量

一段字符可随时变化的

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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值