11ES6:变量提升与暂时性死区

1.变量提升

2.暂时性死区

1.变量提升

console.log(num) // undefined
var num = 1

输出 undefined,这是因为函数内部的变量声明会被提升。

1-1 变量提升的原理
  • js 也是有编译阶段的,其不会早早地完成编译阶段,而是一边编译一边执行。
  • 在短暂地编译阶段,js引擎会收集所有的变量声明,并且提前让声明生效。
1-2 被禁用的变量提升

let、const 区别于 var 的一个重要特征——它们不存在变量提升。

console.log(num)
let num = 1 // Uncaught ReferenceError: num is not defined

2.暂时性死区

2-1 let 关键字 与 var 关键字
  • 用 let 、const 声明变量时,变量会绑定到块级作用域上。
  • 用 var 声明变量时,var 是感知不到块级作用域的。
{
	var name = 'wayliu'
	let age = 18
	console.log(name)  // 'wayliu'
	console.log(age)   // 18
}
console.log(name)  // 'wayliu'
console.log(age)  // 报错

暂时性死区:

如果区块中存在 let 和 const 命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。如果我们尝试在声明前去使用这类变量,就会报错。

2-2 const 关键字
  • const 声明的变量,必须在声明同时被初始化。
const a  // 报错
  • const 声明的变量,赋值过后不可以再更改。
const me = 'wayliu'
me = 'abc'  // 报错
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值