ES6, 1、let和const

let和const的出现,总感觉是为了开发的代码规范而出现的。我们要逐渐放弃使用var,在项目中多使用let和const,他们与var的区别在于:
1,var有变量提升,有初始化提升,值是可变的,没有块级作用域的概念,如果想搞出来一个保护内部变量的方法,可以使用闭包。
2,let有变量提升,没有初始化提升,值是可变的,存在块级作用域。
3,const有变量提升,没有初始化提升,值是不可变的,但是如果定义的是对象,则属性可变,存在块级作用域。
let和const因为暂时性死区的存在,使得没有初始化提升。
暂时性死区:创建了变量但是没有初始化,没法使用变量,“Cannot access ‘value’ before initialization”

function fn () {
    
    
  console.log(name)
  let name = '张三'
}
fn() // Cannot access 'name' before initializat

块级作用域解决问题:

for(var i = 0; i < 5; i++) {
    
    
  setTimeout(() => {
    
    
    console.log(i)
  })
} // 5 5 5 5 5


for(let i = 0; i < 5; i++) {
    
    
  setTimeout(() => {
    
    
    console.log(i)
  })
} // 0 1 2 3 4

猜你喜欢

转载自blog.csdn.net/jinfeng_yu/article/details/120435715