美文网首页
声明变量——var, let, const

声明变量——var, let, const

作者: twentyshaw | 来源:发表于2019-08-26 19:58 被阅读0次

1. var

var a = 2 相当于:

var a;
a = 2 ;

即: var声明的变量会发生变量提升

1.1 有var 和没有 var 的区别:

1.1.1 在顶级作用域声明


如上,不管用不用var,后面赋值的一定会覆盖前面的赋值

1.1.2 在函数内部用var声明


如上,在函数内部,用var声明的变量,只在函数内部有效

1.1.3 在函数内部不用var声明


在函数内部不用var声明,就相当于声明了一个全局变量,在全局内有效

2. let

2.1 let所声明的变量,只在let命令所在的代码块内有效。

2.2 不存在变量提升, 一定要先声明再使用

2.3 暂时性死区

ES6 明确规定,如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。



在let存在的那个区块内,tmp被声明之前就被赋值了

2.4 由于以上性质,在for循环中,推荐用let

for (let i = 0; i < 10; i++) {
     // ...
}

这样,i就只在循环体内有效。
另外,for循环还有一个特别之处,就是设置循环变量的那部分是一个父作用域,而循环体内部是一个单独的子作用域。



上面代码正确运行,输出了 3 次abc。这表明函数内部的变量i与循环变量i不在同一个作用域,有各自单独的作用域。

2.5 不允许重复声明


函数内部也不能重新声明参数


2.6 const

  • 声明一个只读的常量。一旦声明,常量的值就不能改变。
  • 与let一样, 只在声明所在的块级作用域有效,没有变量提升,有暂时性死区,不可重复声明。
  • 一声明就必须马上赋值,只声明不赋值会报错


相关文章

  • 工作中常用的 ES6 语法

    变量声明 let 和const 不用var, 用const声明只读变量,let声明变量。let和const都是块级...

  • js var, let, const特性

    var, let, const 用来声明变量 一、let 用法 声明变量和var类似,但是所声明的变量,只在let...

  • es6

    1、let 和const(定义变量) (1)var 、let 、const的区别 a、作用域区别var 变量声明会...

  • 面试题 var let const的区别 箭头函数和普通函数的区

    var let const 有什么区别 var var声明的变量可进行变量提升,let和const不会var可以重...

  • ES6基础

    变量声明var let 常量声明const const number = 1;let title = "详情页";...

  • (JS)

    ES6 let、const和var的区别 let和const声明变量不存在变量提升 let和const不能重复声明...

  • ES6快速使用

    let const let&const介绍let:声明变量,类似于var,但let所声明的变量只在let命令所在的...

  • JS中var、let、const区别

    在javascript中有三种声明变量的方式:var let const。let var const的区别?var...

  • js中const,var,let区别

    在javascript中有三种声明变量的方式:var let const。let var const的区别?var...

  • ES6语法

    一、变量的声明 变量声明:全局变量var、块级变量let、常量const。 var:全局变量,会有变量提升 let...

网友评论

      本文标题:声明变量——var, let, const

      本文链接:https://www.haomeiwen.com/subject/hpadectx.html