你能在JavaScript中使用常量变量吗?

时间:2010-05-12 18:06:20

标签: javascript constants

我在一个网站上读到你可以在JavaScript中创建常量变量,如:

const x = 20;

但在另一个网站上,我读到你不能。所以我现在很困惑现在是什么?

同样在Visual Studio 2010中,当我编写const时,它会在JavaScript文件中将其加下划线并显示语法错误。

8 个答案:

答案 0 :(得分:40)

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和隐式全局变量的巨大改进。)

答案 1 :(得分:25)

如果您正在寻找只读变量,则可以使用类似

的模型进行模拟
var constants = new (function() {
    var x = 20;
    this.getX = function() { return x; };
})();

然后像

一样使用它
constants.getX()

答案 2 :(得分:5)

解决方案是创建一个对象并将所有常量放在对象中:

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

答案 3 :(得分:3)

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

JScript.NET中提供了const,有些recent versions of JS engines可用{} Firefox,Opera 9,Safari作为特定于供应商的扩展。

答案 4 :(得分:3)

JavaScript ES6(重新)引入了const keyword支持的all major browsers

  

通过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

答案 5 :(得分:2)

我相信有些东西不是var,是一个全局变量...... js中没有const。

var a="test"a="test"

不同

答案 6 :(得分:1)

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

JavaScript是一种松散类型的语言。每种变量都用 var

声明

答案 7 :(得分:0)

查看此文档,它概述了如何在javascript中使用const

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