js常量

原文连接:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/constgit

const 声明建立一个只读的常量。这不意味着常量指向的值不可变,而是变量标识符的值只能赋值一次。(译者注:JavaScript中的常量和Java,C++中的常量一个意思。注意区分常量的值和常量指向的值的不一样)github

语法EDIT

const name1 = value1 [, name2 = value2 [, ... [, nameN = valueN]]];
nameN
常量名称,能够是任意合法的 identifier(标识符)。
valueN
常量值,能够是任意合法的 表达式

描述EDIT

这个声明建立了一个常量,能够在全局做用域或者函数内声明常量,常量须要被初始化。这就是说,在定义常量的同时必须初始化(这是有意义的,鉴于变量的值在初始化后就不能改变)。浏览器

常量拥有块做用域,和使用let 定义的变量十分类似。常量的值不能经过再赋值改变,也不能再次声明。ide

一个常量不能和它所在做用域内的其余变量或函数拥有相同的名称。函数

例子EDIT

下面的例子演示了常量的特性。在浏览器的控制台试一下这个例子。ui

// 注意: 常量在声明的时候可使用大小写,但一般状况下会使用所有大写英文。 // 定义常量MY_FAV并赋值7 const MY_FAV = 7; // 在 Firefox 和 Chrome 这会失败但不会报错(在 Safari这个赋值会成功) MY_FAV = 20; // 输出 7 console.log("my favorite number is: " + MY_FAV); // 尝试从新声明会报错 const MY_FAV = 20; // MY_FAV 保留给上面的常量,这个操做会失败 var MY_FAV = 20; // MY_FAV 依旧为7 console.log("my favorite number is " + MY_FAV); // 下面是一个语法错误 const A = 1; A = 2; // 常量要求一个初始值 const FOO; // SyntaxError: missing = in const declaration // 常量能够定义成对象 const MY_OBJECT = {"key": "value"}; // 重写对象和上面同样会失败 MY_OBJECT = {"OTHER_KEY": "value"}; // 对象属性并不在保护的范围内,下面这个声明会成功执行 MY_OBJECT.key = "otherValue";

规范EDIT

Specification Status Comment
ECMAScript 2015 (6th Edition, ECMA-262)
Let and Const Declarations
Standard Initial definition.
ECMAScript 2017 Draft (ECMA-262)
Let and Const Declarations
Draft  

浏览器兼容性EDIT

 

Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari
Basic support 21 (Yes) 36 (36) 11 12 5.1
Reassignment fails 20 (Yes) 13 (13) 11 ? ?

 

兼容性说明EDIT

在Firefox和Chrome更早期的版本,Safari 5.1.7和Opera 12.00,若是使用const定义一个变量,这个变量的值仍然能够修改。IE6-10 不支持 const,可是IE11支持。this

Firefox-specific notes

在常量被列出ECMAScript 2015 (ES6)标准好久以前,火狐就已经支持常量。  const ES6 请参照 bug 950547 and bug 611388.spa

    • 从 Gecko 36开始 (Firefox 36 / Thunderbird 36 / SeaMonkey 2.33):
      • {const a=1};a 出现 ReferenceError 且因为做用域不在返回1 .
      • const a; 如今会出现  SyntaxError语法错误 ("missing = in const declaration"): 必须有一个初始值.
      • const a = 1; a = 2; 如今会出现 SyntaxError语法错误 ("invalid assignment to const a").
相关文章
相关标签/搜索