Can you use constant variables in JavaScript?
我在一个网站上看到,你可以在javascript中创建常量变量,比如:
1 | const x = 20; |
但在另一个网站上我看到你不能。所以我现在很困惑,现在是什么?
在Visual Studio 2010中,当我编写
ECMAScript 4从未发布过,也不会发布,ECMAScript Harmony只会在几年后发布。因此,您不能可靠地使用它。
有一些ecmascript的实现或派生实现
但是,除非您绝对可以保证您的代码只能在非常特定的ECMAScript派生的非常特定的实现版本上运行,否则最好避免它。(这是一个真正的耻辱,因为
如果要查找只读变量,可以使用类似
1 2 3 4 | var constants = new (function() { var x = 20; this.getX = function() { return x; }; })(); |
然后像这样使用
1 | constants.getX() |
号
解决方案是创建一个对象并将所有常量放在该对象中:
1 2 3 4 5 6 7 | const={}; const.x=20; const.y=30; Object.freeze(const); // finally freeze the object |
使用:
1 | var z=const.x + const.y; |
。
任何修改变量的尝试都将生成一个错误:
1 | const.x=100; <== raises error |
javascriptES6(re-)引入了所有主要浏览器都支持的
Variables declared via
const cannot be re-declared or re-assigned.
号
除此之外,
对于基本数据类型(布尔、空、未定义、数字、字符串、符号),它的行为与预期一致:
1 2 3 | const x = 1; x = 2; console.log(x); // 1 ...as expected, re-assigning fails |
。
注意:注意物体的缺陷:
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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中没有
我相信有一些东西不是用var的,是一个全局变量……JS中没有常量。
不,javascript中没有数据类型"const"。
JavaScript是一种松散类型的语言。每种变量都用var声明
看看这个文档,它概述了如何在javascript中使用const
http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml