我正在运行这段代码,但是给出的结果很奇怪?
let surveyTypes = [1,2];
let surveyDuration = {
surveyTypes[0]: 'first',surveyTypes[1]: 'second'
}
预期输出:
surveyDuration={1:'first',2:'second'}
实际输出:
未捕获的SyntaxError:意外令牌[
答案 0 :(得分:5)
由于要创建wrap
键,因此必须dynamic
将数组的项插入到括号中。
let surveyTypes = [1,2];
let surveyDuration = {
[surveyTypes[0]]: 'first',[surveyTypes[1]]: 'second'
}
console.log(surveyDuration);
答案 1 :(得分:2)
尝试:
let surveyTypes = [1,2];
let surveyDuration = {
[surveyTypes[0]]: 'first',
[surveyTypes[1]]: 'second'
}
为了评估密钥名称,它必须放在方括号内。您可以阅读有关此here
的更多信息尽管surveyTypes[0]
确实返回了1
,但您不能单独使用它作为对象键的原因,纯粹是因为javascript的语法不允许它。选择此语法是为了允许您编写与表达式不冲突的纯键。例如:
const obj = {
hello: 'there'
}
vs
const hello = 5
const obj = {
hello: 'there'
}
请注意,如果没有括号符号,它们将是多么模棱两可。