范围界定;常数“;在JavaScript中

范围界定;常数“;在JavaScript中,javascript,scope,constants,Javascript,Scope,Constants,我正试图找出JavaScript中确定“常量”范围的最佳实践。明确地说,“常数”的提法可能会产生误导。问题的目的是如何正确地确定这些变量的范围。如何声明和使用它们 例如,我可以编写如下代码: var StormData = (function () { /** * @constructor */ StormData = function () { this.atcID = undefined; this.name = undefined; this.entries

我正试图找出JavaScript中确定“常量”范围的最佳实践。明确地说,“常数”的提法可能会产生误导。问题的目的是如何正确地确定这些变量的范围。如何声明和使用它们

例如,我可以编写如下代码:

var StormData = (function () {

/**
 * @constructor
 */
StormData = function () {

    this.atcID = undefined;
    this.name = undefined;
    this.entries = [];
};

StormData.prototype = {

    // Constants
    REVISION: "1.1"
];

return StormData;
})();
不幸的是,由于代码是IIFE,JS说它找不到变量“REVISION”。我不想使用ES2016或更现代版本的JS和“const”,因为跨浏览器/工具的支持是不均衡的。我只想使用“普通”JavaScript——没有ES6,没有TS,等等。
有各种复杂的方法可以做到这一点(只要看看周围的SO)。我可以跳过生命,但这似乎是个糟糕的解决方案。除了更现代的JavaScript版本,还有“最佳”的方法吗?

为什么在该块中有返回?猜测它不是完整的代码表明,每个现代浏览器都很好地使用const。你甚至可以在IE 11上使用它。在原型定义之后,你的可能副本似乎缺少一个结束的花括号。关闭该选项并在IIFE之外测试
new StormData().REVISION
将返回您要查找的值。也就是说,你对使用现代JS和必要时向下传输不感兴趣有什么原因吗?我还建议使用,而不是像那样进行原型设计