JS变量申明let 和 const 以及var 区别

作者:admin   时间:2021-03-25   访问量:30

  ES5 只有全局作用域和函数作用域,没有块级作用域,这带来很多不合理的场景。

  ES6中增加了块级作用域的概念。

  let 命令

  1. let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。

  2. 不存在变量提升

  对比:

  var命令会发生”变量提升“现象,即变量可以在声明之前使用,值为undefined

  3. 不允许重复声明

  let不允许在相同作用域内,重复声明同一个变量。

  4. 暂时性死区

  只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”(temporal dead zone,简称 TDZ)。

  说明:

  由于存在全局变量tmp,但是块级作用域内let又声明了一个局部变量tmp,同一个作用域内,不能重复声明同一个变量,所以在let声明前,对tmp进行赋值则报错

  const

  1. const声明一个只读的常量。一旦声明,常量的值就不能改变。

  2. const一旦声明变量,就必须立即初始化,不能留到以后赋值。对于const来说,只声明不赋值,就会报错

  3. const命令声明的常量也是不提升,同样存在暂时性死区,只能在声明的位置后面使用。

  4. const的作用域与let命令相同:只在声明所在的块级作用域内有效。

  var:变量提升(无论声明在何处,都会被提至其所在作用于的顶部)

  let:无变量提升(未到let声明时,是无法访问该变量的)

  const:无变量提升,声明一个基本类型的时候为常量,不可修改;声明对象可以修改


【地址】:http://www.inseo.cn/seo/142.html转载请注明出处


相关文章

Copyright © 2018-2030 大树SEO All Rights Reserved.