javascript - javascript 对象中允许作为“键”的有效字符/值是什么?
问题描述
我试了几个,
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 键名中哪些字符有效/无效?有一些很好的见解。
但是要触及在 JSON 和 JavaScript“键”之间进行比较时是否允许或不允许一些事情,纯粹记住这些键是否允许输入,那么null,undefined怎么样?
我没有讨论它们是如何在内部被强制并作为键插入的,或者在使用方括号[ ]表示法检索值时会发生什么强制。纯粹基于是否允许您输入该值,是的,JSON 中允许的键与 JavaScript 对象中允许的键之间存在差异。
null 作为 JavaScript 对象中的键
let x = {null: 10};
for(let key in x){
console.log(key); //null
console.log(typeof key); //string
}
作品
null 作为 JSON 中的键
{
null: 10
}
不工作
解决方案
允许任何字符串作为对象键。从规格:
属性使用键值标识。属性键值是 ECMAScript 字符串值或符号值。所有字符串和符号值,包括空字符串,都可以作为属性键有效。属性名称是一个属性键,它是一个字符串值。
推荐阅读
- python - 获取 IndexError:列表索引超出范围
- python - 如何在 keras 中创建过采样(在 caffe lib 中相同)
- java - 如何在 Glide 中获得不超过一定大小的缩略图?
- r - R通过组合两个变量的共同值来重塑数据
- python - 在python函数中如何传递一个可选参数进行过滤
- java - 关于如何创建守护线程来监控地图的最佳实践
- vba - 错误 1004 宏 Excel
- ms-access - 密码保护表单访问
- html - 将光标设置为元素的默认样式或元素:悬停?
- windows - 安装 choco 后,gitlab-ci 在 refreshenv 后退出作业