在JavaScript中,是否可以在函数内定义全局常量?

6
我希望能够在函数内部定义一个全局作用域的常量。对于普通变量,可以在函数外定义并在函数内设置其值,如下所示:
var carType; 

function carType(){

    carType = 'Reliant Robin';

}

然而,您无法定义不设置值的全局变量,因此这对于常量不起作用,有什么解决方法吗?

2
你可能会在全局对象上设置一个不可配置的属性,但这仍然是一种代码异味。 - CertainPerformance
2
const carType; 是非法语法。 - Patrick Roberts
@PatrickRoberts “我想定义一个常量。” - Henry Howeson
2
如果你在定义变量之前声明它,它就不是常数,所以你的请求没有意义。 - Patrick Roberts
2
简短的回答是否定的——你不能使用函数内部的声明或者 eval 来在全局作用域中创建一个全局的 _const__let_ 或者 _class_ 标识符。我在关于作用域的这个回答中研究了 eval 的情况。 - traktor
显示剩余7条评论
1个回答

10
答案是“是”,但这不是典型的声明,可以查看下面的代码片段。
function carType(){
  Object.defineProperty(window, 'carType', {
    value: 'Reliant Robin',
    configurable: false,
    writable: false
  });
}

carType();
carType = 'This is ignored'
console.log(carType);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接