cho*_*bo2 36 javascript constants
我在一个网站上读到你可以在JavaScript中创建常量变量,如:
const x = 20;
Run Code Online (Sandbox Code Playgroud)
但在另一个网站上我读到你不能.所以我现在很困惑现在是什么?
同样在Visual Studio 2010中,当我编写const
它时,它会在JavaScript文件中加下划线并显示语法错误.
Jör*_*tag 40
const
是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
.)
lin*_*lnk 25
如果你正在寻找一个只读变量,你可以用类似的东西模拟它
var constants = new (function() {
var x = 20;
this.getX = function() { return x; };
})();
Run Code Online (Sandbox Code Playgroud)
然后像使用它一样
constants.getX()
Run Code Online (Sandbox Code Playgroud)
小智 6
解决方案是创建一个对象并将所有常量放在对象中:
const={};
const.x=20;
const.y=30;
Object.freeze(const); // finally freeze the object
Run Code Online (Sandbox Code Playgroud)
用法:
var z=const.x + const.y;
Run Code Online (Sandbox Code Playgroud)
任何修改变量的尝试都会产生错误:
const.x=100; <== raises error
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
47354 次 |
最近记录: |