【问题标题】:why javascript const keyword is not working in array?为什么 javascript const 关键字在数组中不起作用?
【发布时间】:2018-06-07 07:23:48
【问题描述】:
function home() {
  const list = ['john', 'adele', 'hary']; list.push('tiger');
  return list;
}
home() //["john", "adele", "hary", "tiger"]

push 方法可用,list[0] = "abc" 可用

在 JS 中,const 关键字与 Java 或 CPP 不同??

【问题讨论】:

  • 没有重新分配!==没有突变
  • 使用list[0],您不会改变整个数组,只是将值分配给某个索引。再次使用Array.push,您并没有改变整个数组,只是在数组末尾添加了一些内容。
  • 您可能正在寻找Object.freeze

标签: javascript ecmascript-6


【解决方案1】:

使用const 声明,您不能重新分配变量,但可以改变它,Array.prototype.push 方法就是这样。

你不能这样做

function home() {
  const list = ['john', 'adele', 'hary']; 
  list = list.concat(['tiger']); // this is reassignment and hence will fail
  return list;
}
home()

【讨论】:

    【解决方案2】:

    文档说明:

    1. 常量不能通过重新赋值来改变
    2. 常量不能重新声明

    您没有重新分配价值,也没有重新声明,因此它是合法的。

    【讨论】:

      【解决方案3】:

      可以将项目推送到数组中。 但是,为变量分配新数组会引发错误 - Uncaught TypeError: Assignment to constant variable。

      list = ['man','woman']; //ERROR IN YOUR CASE
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多