“允许的有效字符/值是什么?”;“钥匙”;在javascript对象中?

“允许的有效字符/值是什么?”;“钥匙”;在javascript对象中?,javascript,object,Javascript,Object,我试了一些 const obj = { '`' : 1, '@' : 2, '^' : 3, '-' : 4, '?' : 5, ']' : 6, '*' : 8, ')' : 9, '/' : 10, '>' : 11, 'ル': 12 } console.log(obj); //{ '`': 1, '@': 2, '^': 3,'-': 4, '?': 5, ']': 6, '*': 8, ')'

我试了一些

const obj = {
    '`' : 1,
    '@' : 2,
    '^' : 3,
    '-' : 4,
    '?' : 5,
    ']' : 6,
    '*' : 8,
    ')' : 9,
    '/' : 10,
    '>' : 11,
    'ル': 12
}

console.log(obj); //{ '`': 1, '@': 2, '^': 3,'-': 4, '?': 5, ']': 6, '*': 8, ')': 9, '/': 10, '>': 11, 'ル': 12}
所以我的问题是,什么是可以作为JavaScript对象中键的字符超集(单个字符而不是它们的组合,这显然是愚蠢的问题)

已编辑--

我曾经有人将JSON与JavaScript对象进行比较,并从中得出答案。 我知道他有一些很好的见解

但是,要涉及到JSON和JavaScript“键”之间的wrt比较是允许还是不允许,请记住这些键是否允许键入,null未定义如何

我不想讨论它们是如何在内部强制并作为键插入的,也不想讨论在使用括号[]表示法检索值时会发生什么强制。纯粹基于是否允许键入该值,是的,JSON中允许的键与JavaScript对象中允许的键之间存在差异

null作为JavaScript对象中的键

有效

在JSON中作为键的null


不起作用

允许任何字符串作为对象键。发件人:

属性使用键值标识。属性键值是ECMAScript字符串值或符号值。所有字符串和符号值(包括空字符串)都作为属性键有效。属性名称是作为字符串值的属性键


由于键可以是字符串的形式,因此可以在字符串中使用的任何字符都可以在键的名称中使用。@JohnMontgomery不完全是这样,因为OP的问题与js有关,而您链接的问题与js有关JSON@ChayimFriedman另一个问题是“对于JavaScript对象或JSON字符串,键名中是否有任何禁止的字符?”不管怎样,答案都是一样的。@约翰蒙哥马利不会同意的!请看我的编辑。@SudhansuChoudhary您的问题没有问什么值可以作为键,而是问什么字符可以作为键。
null
不是字符。
let x = {null: 10};
for(let key in x){
    console.log(key); //null
    console.log(typeof key); //string
}
{
    null: 10
}