javascript - 在 Javascript 中有条件地初始化常量

标签 javascript ecmascript-6 constants

从 ES6 开始,我们有了 const

这是不允许的:

const x; //declare first
//and then initialize it
if(condition) x = 5;
else x = 10;

这是有道理的,因为它阻止我们在初始化之前使用常量。

但如果我这样做

if(condition)
    const x = 5;

else 
    const x = 10;

x 成为 block 作用域。

那么如何有条件地创建一个常量呢?

最佳答案

如您所知,您的问题是 const 必须在声明它的同一表达式中进行初始化。

这并不意味着分配给常量的值必须是文字值。它实际上可以是任何有效的表达式 - 三元:

const x = IsSomeValueTrue() ? 1 : 2;

或者只是将其分配给变量的值?

let y = 1;
if(IsSomeValueTrue()) {
    y = 2;
}

const x = y;

您当然也可以将其分配给函数的返回值:

function getConstantValue() {
    return 3;
}

const x = getConstantValue();

因此,有很多方法可以使值动态化,您只需确保它仅分配在一个位置即可。

关于javascript - 在 Javascript 中有条件地初始化常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38765194/

相关文章:

javascript - Chartjs 未在导航堆栈中呈现

javascript - 在javascript中获取表单名称

javascript - 如何在jquery/javascript中将对象转换为数组

javascript - ES6从变量解构

c++ - 为什么在另一个文件中更改 extern const 时链接器不会失败?

C++ const-ness,Boost 无序映射,operator[]

javascript - 在 React Native 中运行 mount() 不可能吗?

javascript - ES6 中的多级对象解构

javascript - Babili 缩小但不转译

c++ - 如何复制具有 const 字段的成员