const

来源:互联网 发布:淘宝店铺几天自动收货 编辑:程序博客网 时间:2024/05/16 14:23

const

在本文章中

常量是块级作用域,很像使用 let 语句定义的变量。常量的值不能通过重新赋值来改变,并且不能重新声明。

语法Edit

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

描述Edit

此声明创建一个常量,其作用域可以是全局或本地声明的块。 与var变量不同,全局常量不会变为窗口对象的属性。需要一个常数的初始化器;也就是说,您必须在声明的同一语句中指定它的值(这是有道理的,因为以后不能更改)。

const声明创建一个值的只读引用。但这并不意味着它所持有的值是不可变的,只是变量标识符不能重新分配。例如,在引用内容是对象的情况下,这意味着可以改变对象的内容(例如,其参数)。

关于“暂存死区”的所有讨论都适用于letconst

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

示例Edit

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

// 注意: 常量在声明的时候可以使用大小写,但通常情况下全部用大写字母。 // 定义常量MY_FAV并赋值7const MY_FAV = 7;// 报错MY_FAV = 20;// 输出 7console.log("my favorite number is: " + MY_FAV);// 尝试重新声明会报错 const MY_FAV = 20;//  MY_FAV 保留给上面的常量,这个操作会失败var MY_FAV = 20; // 也会报错let MY_FAV = 20;// 注意块范围的性质很重要if (MY_FAV === 7) {     // 没问题,并且创建了一个块作用域变量 MY_FAV    // (works equally well with let to declare a block scoped non const variable)    let MY_FAV = 20;    // MY_FAV 现在为 20    console.log('my favorite number is ' + MY_FAV);    // 这被提升到全局上下文并引发错误    var MY_FAV = 20;}// MY_FAV 依旧为7console.log("my favorite number is " + MY_FAV);// 常量要求一个初始值const FOO; // SyntaxError: missing = in const declaration// 常量可以定义成对象const MY_OBJECT = {"key": "value"};// 重写对象和上面一样会失败MY_OBJECT = {"OTHER_KEY": "value"};// 对象属性并不在保护的范围内,下面这个声明会成功执行MY_OBJECT.key = "otherValue";// 也可以用来定义数组const MY_ARRAY = [];// It's possible to push items into the array// 可以向数组填充数据MY_ARRAY.push('A'); // ["A"]// 但是,将一个新数组赋给变量会引发错误MY_ARRAY = ['B']

规范Edit

SpecificationStatusCommentECMAScript 2015 (6th Edition, ECMA-262)
Let and Const DeclarationsStandardInitial definition.ECMAScript Latest Draft (ECMA-262)
Let and Const DeclarationsLiving StandardNo changes.

浏览器兼容Edit

  • Desktop 
  • Mobile
FeatureChromeEdgeFirefoxInternet ExplorerOperaSafariBasic Support21(Yes)361 211(Yes)5.1

1. Prior to Firefox 13, const is implemented, but re-assignment is not failing.

2. Prior to Firefox 46, a TypeError was thrown on redeclaration instead of a SyntaxError.

相关链接Edit

  • var
  • let
原创粉丝点击