这个问题在这里已有答案:
我在一个网站上读到你可以在JavaScript中创建常量变量,如:
const x = 20;
但在另一个网站上我读到你不能。所以我现在很困惑现在是什么?
同样在Visual Studio 2010中,当我编写const
时,它在JavaScript文件中加下划线并显示语法错误。
const
is a proposed feature of ECMAScript Harmony(与一个正确的块范围的let
一起,它应该取代var
和隐式全局变量)。 ECMAScript Harmony是下一版ECMAScript的一大堆想法。
const
也是ECMAScript 4的一部分。
ECMAScript 4从未发布过,也永远不会发布,ECMAScript Harmony将在几年内发布。因此,您无法可靠地使用它。
ECMAScript的一些实现或衍生物实现了const
(例如ActionScript)。还有一些实现接受const
作为var
的同义词(IOW,你可以使用const
,但它不会给你任何保护。)
但是,除非您绝对可以保证您的代码只能在ECMAScript的非常具体的衍生产品的特定版本上运行,否则最好避免使用它。 (这是一个真正的耻辱,因为const
,特别是let
是对var
和隐式全局变量的巨大改进。)
如果你正在寻找一个只读变量,你可以用类似的东西模拟它
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
ECMAScript中没有const
(无视死亡版本4.0和ActionScript)。
const
可在JScript.NET获得,有些recent versions of JS engines可用Firefox,Opera 9,Safari作为特定于供应商的扩展。
JavaScript ES6(重新)引入了const
keyword支持的all major browsers。
通过
const
声明的变量无法重新声明或重新分配。
除此之外,const
的行为类似于let
。
它的行为与原始数据类型(Boolean,Null,Undefined,Number,String,Symbol)的预期相同:
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
我相信有些东西不是var,是一个全局变量.... js中没有const。
var a="test"
与a="test"
不同
不,JavaScript中没有数据类型“const”。
JavaScript是一种松散类型的语言。每种变量都用var声明
看看这个doc,它概述了如何在javascript中使用const
http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml