三分钟了解var let const区别

175 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第17天,点击查看活动详情 目录

相同点

一 三者不同点 

1.声明提升

2.变量覆盖

3.没有块级作用域(重要)

二 const 与let 的区别

1.const 声明之后必须赋值 否则就会报错

2.定义的值不能去修改,引用数据类型可以修改否则会报错


相同点

都是定义变量,但是在es6中不在使用var

一 三者不同点 

1.声明提升

先声明

在es6中let 跟const 都是先声明在使用的

在var中 它的顺序没有要求

 console.log(num)  //undefined

    var num = 123    

 在 let/const 中

 console.log(num)  //undefined

    let num = 123     报错

2.变量覆盖

在var中 可以定义相同的变量名

var num1 = 12

var num1 = 34

console.log(num1)  // 34

 eg:在外面定义obj里面有大量数据  var obj = {}   

在次声明obj为字符串 obj = ' '  它会把之前对象里面的数据全部覆盖,会出现一些不可预知的错误

 在 let/const 中 

定义相同的名字时,编译器就会自动报红

已经定义了不能在重复定义

3.没有块级作用域(重要)

 function fn2() {

      for(var i = 0; i <3; i++){

        console.log(i)  // 0 1 2

      }\

    }

    fn2()

 如果在for循坏外打印i

 function fn2() {

      for(var i = 0; i <3; i++){

        console.log(i)  // 0 1 2

      }

      console.log(i) // 3  

    }

    fn2()

依然会打印出3,说明var没有块级作用域\

var定义的i本来是在for循坏里使用的,但它却也可以在for循环外打印 换成let 跟const 会报错

二 const 与let 的区别

const定义的叫做常量 一般常量名要大写,用于全局的

let定义的叫做变量

1.const 声明之后必须赋值 否则就会报错

const demo 报错 

2.定义的值不能去修改,引用数据类型可以修改否则会报错

const demo = 123

        demo = 456

    console.log(demo)  报错