Javascript 对象文字中属性名称周围的方括号是什么意思?

Javascript 对象文字中属性名称周围的方括号是什么意思?,javascript,ecmascript-6,Javascript,Ecmascript 6,我已经用JS写了一段时间了,没有使用过这个表单: dist: { files: { [bpr + 'lib/Monster.min.js']: ['<%= concat.dist.dest %>'] } } } 它可以工作,我只是以前没有使用过或见过它。只是最近在ES6上才使用过。它们被称为“计算属性名” 发件人: 从ECMAScript 2015开始,对象初始值设定项语法 支持计算属性名。这允许你把一个表达式 在括号[]中,将计算为属性名称 在

我已经用JS写了一段时间了,没有使用过这个表单:

  dist: {
    files: {
      [bpr + 'lib/Monster.min.js']: ['<%= concat.dist.dest %>']
    }
  }
}

它可以工作,我只是以前没有使用过或见过它。

只是最近在ES6上才使用过。它们被称为“计算属性名”

发件人:

从ECMAScript 2015开始,对象初始值设定项语法 支持计算属性名。这允许你把一个表达式 在括号
[]
中,将计算为属性名称


在ES6中,使用计算密钥对时,方括号是操作系统对象文字的一部分

例如:-

问题 下面的字符串“key”乘以5生成一个名为“key”*5的计算键,现在不使用方括号,这将导致语法错误

const newObject = {
    "key"*5:"value"
}
解决方案 解决方案是在使用计算属性作为键之前使用方括号

const newObject = {
    ["key"*5]:"value"
}

有关如何创建对象的更多参考,请查看此

抱歉,我没有说环境,我正在从命令行使用Grunt,这是Grunt使用的Gruntfile.js。我需要一个基于变量的键,所以我只是尝试了一下,它成功了。但答案是肯定的,这是正确的JavaScript ES6,但对ES5不正确。我读了一篇关于ES6的文章,这可能应该在ES6提供的前5个补充中提到。非常好。@cadegalt你能在你的问题中添加关于代码运行位置的信息吗?
const newObject = {
    ["key"*5]:"value"
}