var、let

2020-06-11  本文已影响0人  darkTi

一、区别

  1. var声明的变量
    ①没有块的概念,可以跨块访问,但不能跨函数访问;
    ②作用域在该语句所在的函数内,且存在变量提升现象;
    (啥?你问我啥是块?像for、if等这些创建的{},都属于块作用域)
function bar(){
  {
    var a = 1
  }
  console.log(a)
}
bar()  //  1

function bar(){
  {
    let a = 1
  }
  console.log(a)
}
bar()  //  ReferenceError: a is not defined
for(i = 1; i < 5; i++){
       console.log(i);//1 2 3 4
 }
 console.log(i);//5

for(let j = 1; j < 5; j++){
        console.log(j);//1 2 3 4
 }
console.log(j);//ReferenceError: j is not defined  因为j只在for那个块里定义了
  1. let声明的变量
    ①只能在块作用域里访问,不可以跨块访问,更不能跨函数访问;
    ②作用域在该语句所在的代码块中,且不存在变量提升现象;
    ③let在相同的作用域下,不允许重复声明变量;
    ④存在暂时性死区,在变量声明之前是不能使用的,否则会报错;
  2. ①const用来定义常量,使用时必须初始化(即必须赋值,不赋值就会报错);
    ②和let一样只能在块作用域里访问,而且不能修改;
    ③const声明的常量也是不提升,同样存在暂时性死区,只能在声明的位置后面使用,而且也是不能重复声明;
    但是!!!
    image.png
上一篇 下一篇

猜你喜欢

热点阅读