用汉语作为对象的关键

Jus*_*ang 3 javascript object

如何使用中文字符或数字作为对象的键,如下所示:

var obj = { ?: 'me',  20: 'you' };   

console.log(obj.?);  // me
console.log(obj[?]); // -> Reference Error: ? is not defined

console.log(obj[20]); // you
console.log(obj.20);  // ->Syntax Error: Unexpected number
Run Code Online (Sandbox Code Playgroud)

el.*_*ado 8

为了在对象中使用点表示法,键必须是有效的JavaScript标识符.Mozilla文档网络声明:

您可以在标识符中使用ISO 8859-1或Unicode字母,例如å和ü.您还可以将Unicode转义序列用作标识符中的字符.

事实上,在Firefox中这是有效的语法:

var x = { ?: 5 };
x.?
var ? = 42;
console.log(?);
Run Code Online (Sandbox Code Playgroud)

Chrome也接受了这一点.

如果您的浏览器(或访问者使用的浏览器)不遵循严格的标准,您可以使用:

var obj = { '?': 'me',  20: 'you' };
console.log(obj['?']);
Run Code Online (Sandbox Code Playgroud)

值得注意的是,您可以使用任意字符串作为对象键,即使它们不是有效的JavaScript标识符(例如,包含空格和/或标点符号):

var obj = { " ": "space", ";": "semicolon" };
Run Code Online (Sandbox Code Playgroud)