let、const、var的区别

  在JavaScript中,常见的声明变量的方式有var、let、const;其中,let和const是ES6中出现的新的声明变量的方式。

1、let

  let用来声明变量,用法类似于 var,只不过使用let声明的变量,只在其所在的块级作用域中有效,在该作用域之外无效;

  let声明的变量在一个作用域中只能声明一次,如果重复声明多次,会报错如下:Uncaught SyntaxError: Identifier 'a' has already been declared

  let不能在函数中重新声明参数

2、const

  const声明的是一个只读的常量,一旦声明,值将无法改变;

  对于const来说,只声明不赋值就会报错;const声明变量之后必须立即初始化;如果不初始化,即会出现如下错误:Uncaught SyntaxError: Missing initializer in const declaration

  const保证的并不是变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动;

  对于复合型数据来说,const只能保证这个指针式固定的,但是没有办法保证他指向的数据结构是不是可变的

3、暂时性死区

  暂时性死区的本质就是:只要已进入当前作用域,所要使用的变量就已经存在了,但是不可获取,只有等到声明变量的那一行代码执行的时候,才可以获取和使用该变量。

  【注意】ES6中规定:暂时性死区、let和const语句不出现变量提升,主要是为了减少运行时错误,防止在变量声明前就使用这个变量。

4、let、const和var的区别

这三个关键字声明变量的时候,都会存在变量提升,主要区别如下:

  - var在声明变量的时候,如果没有赋值,会默认被初始化为undefined;

  - let/const在声明变量的时候,会先创建变量,但是不会初始化变量,只有在声明语句执行的时候变量才会被赋值;

  - let在声明语句执行的时候,如果没有被赋值,会默认赋值为undefined;const声明的是一个常量,在执行的时候必须被初始化;如果没有被赋值,则会报错。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章