js中的变量提升

  • 定义:将声明移动到顶部的默认行为,即变量可以在声明之前使用
  • 作用:提高性能,提高容错性
  • 在es6之前 ,JavaScript作用域分为全局作用域(变量可全局使用)和函数作用域(变量只能在函数内部使用),使用变量提升可以解决块级作用域,但是出现了占用内存和变量覆盖的问题
  • 变量覆盖例子
//由于变量提升,浏览器预解析如下
/*var name = undefined
function f(){
	var name = undefined
}*/
var name = "时间"
f();
function f(){
/函数调用时会将先输出函数内部的name变量
  console.log(name);//undefined
  if(1){
   var name= "金钱"//如果函数内部没有这个变量定义,则调用函数的时候会往上一级查找name变量进行输出
  }
  console.log(name);//金钱
}

  • 占用内存例子
function f(){
	for(var i = 0; i < 2; i++){
		console.log(i)//0、1
	}
	//此时i没有被销毁,占用了内存
	console.log(i)//2
}
  • es6提出的let和const不支持变量提升,解决了变量提升带来的问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值