你可以在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
和尤其是let
对var
和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