我在一个网站上读到,你可以像这样在 JavaScript 中创建常量变量:
const x = 20;
但在另一个网站上我读到说你不能这样做。所以现在我很困惑它到底是什么?
另外,在 Visual Studio 2010 中,当我在 JavaScript 文件中写 const
时,它会将其标记并显示语法错误。
我在一个网站上读到,你可以像这样在 JavaScript 中创建常量变量:
const x = 20;
但在另一个网站上我读到说你不能这样做。所以现在我很困惑它到底是什么?
另外,在 Visual Studio 2010 中,当我在 JavaScript 文件中写 const
时,它会将其标记并显示语法错误。
const
是 ECMAScript Harmony 的一个新特性(连同块级作用域的 let
,它们将取代 var
和隐式全局变量)。ECMAScript Harmony 是下一版本 ECMAScript 的一系列想法。
const
也是 ECMAScript 4 的一部分。
ECMAScript 4 从未发布,也永远不会发布,而 ECMAScript Harmony 将在几年后才能发布。因此,您无法可靠地使用它。
有些 ECMAScript 实现或衍生品实现了 const
(例如 ActionScript)。还有一些实现将 const
视为 var
的同义词(也就是说,您可以使用 const
,但它不会给您任何保护)。
但是,除非您绝对可以保证您的代码只在非常特定的 ECMAScript 衍生品的非常特定的版本上运行,否则最好避免使用它。(这真是太遗憾了,因为 const
和尤其是 let
相对于 var
和隐式全局变量是一个巨大的改进。)
const
不仅仅是用于常量(即“常量值”),它还用于常量绑定。 - Mathias Bynens如果你正在寻找一个只读变量,你可以使用类似于下面的代码来模拟:
var constants = new (function() {
var x = 20;
this.getX = function() { return x; };
})();
然后像这样使用它
constants.getX()
const={};
const.x=20;
const.y=30;
Object.freeze(const); // finally freeze the object
使用方法:
var z=const.x + const.y;
const.x=100; <== raises error
const
关键字,该关键字在所有主流浏览器中都得到支持。const
声明的变量不能被重新声明或重新赋值。const
的行为类似于let
。const x = 1;
x = 2;
console.log(x); // 1 ...as expected, re-assigning fails
注意:要注意对象相关的陷阱:
const o = {x: 1};
o = {x: 2};
console.log(o); // {x: 1} ...as expected, re-assigning fails
o.x = 2;
console.log(o); // {x: 2} !!! const does not make objects immutable!
const a = [];
a = [1];
console.log(a); // 1 ...as expected, re-assigning fails
a.push(1);
console.log(a); // [1] !!! const does not make objects immutable
在ECMAScript中没有const
关键字(不考虑已经死亡的4.0版本和ActionScript)。
const
关键字在JScript.NET中可用,并且在一些最近的JS引擎版本,如Firefox、Opera 9和Safari中作为供应商特定的扩展。
const
也可在 Mozilla 实现(Rhino、SpiderMonkey)中使用。 - Christian C. Salvadó我认为有一些不是使用 var 声明的变量,是全局变量...在 JavaScript 中没有 const。
var a="test"
和 a="test"
是不同的。
不,JavaScript 中没有数据类型 "const"。
JavaScript 是一种弱类型语言。每种变量都是用 var 声明的。