为什么没有引号就不会出错? [重复]

问题描述 投票:1回答:1

这里upperLeft和LowerRight不在引号中,但是为什么它没有引发任何错误?

例:-对象文字可以嵌套。例如:
var rectangle = { upperLeft:  { x: 2, y: 2 },
                  lowerRight: { x: 4, y: 5 } }; 

这是关于javascript中的对象初始值设定项。

javascript object-literal
1个回答
0
投票

对象只能将键作为stringsymbol,否则其他任何键都将在内部转换为字符串。

对象在内部将其键转换为字符串,因此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"括号符号>>

© www.soinside.com 2019 - 2024. All rights reserved.