JavaScript常量
该关键字在[ES6 (2015)] const
中引入
用 定义的变量const
不能被重新声明
用 定义的变量const
不能被重新赋值
const
使用块作用域定义的变量
无法重新分配
变量const
不能被重新赋值:
1 | const PI = 3.141592653589793; |
必须分配
JavaScriptconst
变量在声明时必须赋值:
:正确的
1 | const PI = 3.14159265359; |
:不正确
1 | const PI; |
什么时候使用 JavaScript const?
const
当您知道不应更改值时,请始终声明变量。
const
声明时使用:
- 一个新的数组
- 一个新对象
- 一个新功能
- 一个新的正则表达式
常量对象和数组
该关键字const
有点误导。
它没有定义常量值。它定义了对值的常量引用。
因此,您不能:
- 重新分配一个常量值
- 重新分配常量数组
- 重新分配常量对象
但是你可以:
- 更改常量数组的元素
- 改变常量对象的属性
常量数组
您可以更改常量数组的元素:
1 | // You can create a constant array: |
但你不能重新分配数组:
1 | const cars = ["Saab", "Volvo", "BMW"]; |
常量对象
您可以更改常量对象的属性:
1 | // You can create a const object: |
但你不能重新分配对象:
1 | const car = {type:"Fiat", model:"500", color:"white"}; |
var、let 和 const 之间的区别
范围 | 重述 | 重新分配 | 吊装 | 绑定这个 | |
---|---|---|---|---|---|
var | No | Yes | Yes | yes | Yes |
let | Yes | No | Yes | No | No |
const | Yes | No | No | No | No |
什么是好的?
let
并且const
具有块作用域。
let
并且const
不能重新申报。
let
并且const
必须在使用前声明。
let
并且const
不绑定到this
.
let
并且不const
被吊装。
什么是不好?
var
不必声明。
var
被吊起。
var
与此相关。
浏览器支持
Internet Explorer 11 或更早版本不支持let
和关键字。const
下表定义了完全支持的第一个浏览器版本:
Chrome 49 | Edge 12 | Firefox 36 | Safari 11 | Opera 36 |
Mar, 2016 | Jul, 2015 | Jan, 2015 | Sep, 2017 | Mar, 2016 |
块范围
在块作用域中,使用 const 声明变量与 let 类似。
在本例中,块中声明的 x 与块外声明的 x 不同:
1 | const x = 10; |
重新申报
var
程序中的任何位置都允许重新声明 JavaScript变量:
1 | var x = 2; // Allowed |
不允许在同一范围内将现有的var
或let
变量重新声明为const
:
1 | var x = 2; // Allowed |
const
不允许在同一范围内重新分配现有变量:
1 | const x = 2; // Allowed |
const
允许在另一个作用域或另一个块中使用 ,重新声明变量:
1 | const x = 2; // Allowed |
吊装
用定义的变量var
被提升到顶部并且可以随时初始化。
含义:您可以在声明变量之前使用该变量:
还行吧:
1 | carName = "Volvo"; |
用定义的变量const
也会被提升到顶部,但不会被初始化。
含义:const
在声明变量之前使用变量将导致 ReferenceError
:
1 | alert (carName); |
0评论