【问题标题】:Declare a const variable in javascript without initialization在javascript中声明一个const变量而不初始化
【发布时间】:2020-05-09 04:59:22
【问题描述】:

在 javascript 中,据我了解,我们可以使用 let 和 var 关键字声明变量,然后再为其赋值。

var a;
a = 5;

但是,当我使用 const 关键字尝试相同的方法时,它不起作用。

const a;
Uncaught SyntaxError: Missing initializer in const declaration

我知道我的问题有一个基本的矛盾,因为 const 关键字用于存储不可变变量。因此,良好的编码习惯可能需要在声明时对其进行初始化。

但是,我想将全局值存储在 API 正在获取的 const 变量中。所以,我想知道是否有一种方法可以为 javascript 中预先声明的 const 变量赋值?

【问题讨论】:

  • 它有什么意义?您不能重新分配 const 变量。如果你声明它没有值,你以后如何给它一个值?
  • 你可能会想到declarestackoverflow.com/questions/49745860/…
  • const 不是说值不可变,而是说变量不可变。
  • 我同意你的看法,这可能不是正确的做法。但是,我想知道是否有一种聪明的方法可以将 api 在 vanilla javascript 中获取的值存储为 const 全局变量。
  • 解决这个问题的正确方法是将响应的承诺存储在全局常量中。

标签: javascript constants


【解决方案1】:

const 适用于变量,而不是值。你必须初始化它们,因为你不能在以后分配它们——这是它们唯一的区别。您不能有一个只能分配一次但不能重新分配的变量。

如果结果是一个对象,你可以声明这个常量来保存一个空对象,然后使用Object.assign()用API响应填充它。

const result = {};
fetch(...).then(response => response.json()).then(data => Object.assign(result, data));

【讨论】:

  • 改为“填写”。
【解决方案2】:

我认为你不能那样做。在 JavaScript 中,const 变量必须在声明时赋值:

不正确

const PI;
PI = 3.14159265359;

正确

const PI = 3.14159265359;

更多参考,你可以看看这个,它会给你一个更好的解释

https://www.w3schools.com/js/js_const.asp

【讨论】:

    【解决方案3】:

    你不能这样做,至少在运行时不能。我建议您考虑使用 TypeScript,它具有 readonly 修饰符,可以帮助您保护变量在在编译时被覆盖。

    【讨论】:

      【解决方案4】:

      有两种方法可以创建具有默认值的 const,1 个属性可变的对象,2 个数组,如下所示。

      const a = {};
      cosnt b = [];
      

      【讨论】:

      • 并考虑到数组 is 一个对象 ...
      • 是的,抱歉
      • 没什么好遗憾的。
      猜你喜欢
      • 1970-01-01
      • 2021-10-28
      • 1970-01-01
      • 2015-04-27
      • 2014-10-24
      • 2016-11-01
      • 2013-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多