这里upperLeft和LowerRight不在引号中,但是为什么它没有引发任何错误?
例:-对象文字可以嵌套。例如:var rectangle = { upperLeft: { x: 2, y: 2 }, lowerRight: { x: 4, y: 5 } };
这是关于javascript中的对象初始值设定项。
对象只能将键作为string或symbol,否则其他任何键都将在内部转换为字符串。
对象在内部将其键转换为字符串,因此1
和"1"
都相同。因此在这里,upperLeft和lowerLeft不会在这里抛出任何错误,因为它将它们仅视为字符串]
let obj = {
1: '1',
hey: 'hey'
}
console.log(obj["1"])
console.log(obj[1])
console.log(obj[1] === obj['1'])
对象初始化程序中的表达式是在初始化期间求值的,因此您可以使用任何表达式来获得动态键或值。
let key = 'key'
let newKeyValue = "Some value"
const obj = {
[key] : 'some value',
[1 + 2] : 'some more value',
newKey: newKeyValue
}
console.log(obj)
法律identifiers
表示遵循以下规则的任何内容
但是在对象键中,您可以使用任何合法的字符串,它将在定义变量时不能使用保留字和非法标识符的地方起作用
identifiers
注:-要访问无效的标识符,您需要使用const obj = {
"1abc" : 'some value'
}
console.log(obj['1abc'])
const do = "no you can't"
括号符号>>