【问题标题】:Why is it impossible to assign constant properties of JavaScript objects using the const keyword?为什么不能使用 const 关键字来分配 JavaScript 对象的常量属性?
【发布时间】:2012-06-06 07:30:34
【问题描述】:
【问题讨论】:
标签:
javascript
object
properties
constants
variable-assignment
【解决方案1】:
如果您想在现代浏览器中使用不可更改的值,请使用 defineProperty 创建不可写(也称为只读)属性:
var App = {};
Object.defineProperty(App,'goldenRatio',{value:1.6180339887});
console.log( App.goldenRatio ); // 1.6180339887
App.goldenRatio = 42;
console.log( App.goldenRatio ); // 1.6180339887
delete App.goldenRatio; // false
console.log( App.goldenRatio ); // 1.6180339887
如果您没有将选项中的writable:true 传递给defineProperty,则默认为false,因此会默默地忽略您尝试对该属性进行的任何更改。此外,如果您不传递configurable:true,则默认为false,您可能无法删除该属性。
【解决方案2】:
除了 const 支持和不支持跨浏览器(这是 ES6 功能)这一事实之外,const App.goldenRatio= 1.6180339887 不工作的原因与 var App.goldenRatio= 1.6180339887 不工作的原因相同:您正在设置对象属性,因此在其前面加上 var 或 const 关键字是语法错误。
【解决方案3】:
要回答你想问的问题,并说永远不要使用const。解释器对它不做任何事情。它所做的只是误导开发人员认为他/她可以假设值永远不会改变,这与const 关键字不存在的可能性差不多。
【解决方案4】:
var MY_CONSTANT = "一些值";
您可以使用 ALL_CAPS 之类的约定来表明不应修改某些值