<p>例如可以使用</p>
<pre><code>const PI = 3.14159265; </code></pre>
<p>但如何把對象的成員定義爲常量?例如,我想這樣,但是卻不可以:</p>
<pre><code>const MathLib.PI = 3.14159265; </code></pre>
一般不推荐使用 const 关键字,因为它不是 ECMAScript 语法的一部分。
当需要常量的时候一般是以命名习惯来约束的,亦即使用大写字母加下划线。
如果需要“真正的”常量的话,可以使用 ECMA 5 的 defineProperty 方法,
例如:
var M = {};
Object.defineProperty(M, 'PI', {
get: function() { return 3.14; }
});
或者
var M = {};
Object.defineProperty(M, 'PI', {
value: 3.14,
writable: false
});
注意由于这个方法是 ECMA 5 的一部分,所以在 node 上用是完全没有问题的,但是就请不要在浏览器端用了(除非不打算支持 IE 以及一些旧版本的浏览器用户)。
关于 defineProperty 的详细用法可以参考 MDN 和 John Resig 的 blog
這種定義方法看起來很不優美啊,大家都是依靠約定大寫字母加下劃線來定義常量的嗎?
嗯,一直一来都是靠约定俗成的方式用大写字母定义常量的,关于代码风格的问题可以参考 Google JavaScript Style Guide 和 Felix’s Node.js Style Guide
然而,const将会成为ECMAScript 6标准中的一部分,但是将会有不同的语义:使用const声明的常量会和使用let语句声明的变量一样,拥有块级作用域. ---------引自MDN