03-JavaScript变量、作用域

基本类型和引用类型的值

基本数据类型值:简单的数据段,按值访问。
引用类型值:保存在内存中的对象,引用访问。

  • 复制变量不同
    基本类型:在变量对象上创建一个新值,把该值赋值到为新变量分配的位置上。
    引用类型:不同的是复制的值是一个指针,指向存储在堆中的一个对象,复制结束后,两个变量实际上引用同一个对象。
  • 传递参数
    都是值传递,不过也有不同
    基本类型:把被传递的值复制给参数。
    引用类型:把被传递的在内存中的地址复制给参数。
  • 监测类型
    简称基本类型时用typeof,检测引用类型:Object、Array、String、Regexp、Boolean等用typeof都返回"object",需用instaceof
var str = new String('abc')
typeof str  
"object"

Boolean {true}
typeof bol
"object"
str instanceof String
true

执行环境及作用域

所有变量(包括基本类型和引用类型)都存在于一个执行环境(也称作用域)中,这个执行环境决定了变量的生命周期,以及哪一部分可以访问其中的变量。

1.执行环境(作用域)

  • 定义了变量和函数有权访问的其他数据并决定了他们各自的行为。
  • 每个执行环境都有一个变量对象,环境中定义的变量和函数保存在此对象中。
    2.全局执行环境
  • 最外围的一个执行环境
  • web浏览器中的全局执行环境被认为是window对象。
  • 执行环境中的代码执行完=》环境销毁=》保存在其中的变量和函数定义销毁
    3.局部执行环境+执行流
  • 每个函数都有自己的执行环境
  • 执行环境进入一个函数,函数的环境被推入一个执行栈中
  • 函数执行后,环境栈将环境弹出,控制前返回给之前的环境
    4.作用域链
  • 当代码在一个环境中执行时,会创建变量对象的一个作用域链。
  • 作用域链中的下一个变量对象来自外部环境,再下一个变量来自下一外部环境,延申到全局变量。
var color = "blue"
function changeColor () {
  if (color ==="blue") {
     color = "red";  
  }else {
      color = "blue" 
  }
}
changeColor()

changeColor()的作用域链包含两个对象(每个执行环境都有一个关联的对象):自己的和全局的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值