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").
相關文章
相關標籤/搜索