你可以在JavaScript中使用常量variables吗?

我正在使用visual studio 2010并创build了一个JavaScript文件(jscript.js),我在一个页面上看到说你可以在JavaScript中创build常量variables,如下所示:

const x = 20; 

埠到另一页上,我读它说,你不能。 所以我现在很困惑现在是什么?

另外在Visual Studio中,当我写“const”时,它在javascript文件中强调了它的语法错误。

const是ECMAScript Harmony的一个build议特性 (连同一个正确的块范围的, let它应该取代var和implicit全局variables)。 ECMAScript Harmony是ECMAScript下一个版本的理念之一。

const也是ECMAScript 4的一部分。

ECMAScript 4从未发布,永远不会,ECMAScript和谐只会在几年内发布。 因此,你不能可靠地使用它。

有一些ECMAScript的实现或派生实现了const (例如ActionScript)。 还有一些实现接受const作为var的同义词(IOW,你可以使用const ,但它不会给你任何保护)。

然而,除非你完全可以保证你的代码只能运行在非常具体的非常具体的ECMAScript衍生物的特定版本上,否则最好避免它。 (这是一个真正的耻辱,因为const和尤其是letvar和implicit globals有一个巨大的改进。)

如果你正在寻找一个只读variables,你可以用类似的东西来模拟

 var constants = new (function() { var x = 20; this.getX = function() { return x; }; })(); 

然后像使用它

 constants.getX() 

在ECMAScript中没有const (忽略死的4.0版本和ActionScript)。

const在JScript.NET中是可用的,而一些最新版本的JS引擎,例如Firefox,Opera 9,Safari作为特定于供应商的扩展。

解决的办法是创build一个对象,并把所有的常量放在对象中:

 const={}; const.x=20; const.y=30; Object.freeze(const); // finally freeze the object 

用法:

 var z=const.x + const.y; 

任何修改该variables的尝试都会产生一个错误:

 const.x=100; <== raises error 

我相信有一些是不是与var,是一个全局variables…. js中没有常量。

var a="test"不同于a="test"

JavaScript ES6(重新)引入了所有主stream浏览器都支持的const关键字 。

通过const声明的variables不能被重新声明或重新赋值。

除此之外, const行为类似于let

它对原始数据types(布尔,空,未定义,数字,string,符号)的行为如预期的那样:

 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 ox = 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 

不,JavaScript中没有数据types“ const ”。

JavaScript是一种松散types的语言。 每种variables都是用var声明的

看看这个文档,它概述了如何在JavaScript中使用const

http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml