Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript对象-键以数字开头,允许吗?_Javascript_Jquery_Arrays_Object_Key - Fatal编程技术网

Javascript对象-键以数字开头,允许吗?

Javascript对象-键以数字开头,允许吗?,javascript,jquery,arrays,object,key,Javascript,Jquery,Arrays,Object,Key,允许这样做吗 myObj = {}; myObj['4a56546s6d'] 或者密钥必须以如下字母开头: myObj = {}; myObj['x4a56546s6d'] 我可以把两者混合起来吗 myObj = {}; myObj['x4a56546s6d'] myObj['4a56546s6d'] 我这样问是因为有些东西(例如HTML中的ID)必须以字母开头。目前,我已将钥匙和fireBug标记为蓝色(以数字开头)。请参见本页: JavaScript标识符必须以字母、下划线(_)或美元

允许这样做吗

myObj = {};
myObj['4a56546s6d']
或者密钥必须以如下字母开头:

myObj = {};
myObj['x4a56546s6d']
我可以把两者混合起来吗

myObj = {};
myObj['x4a56546s6d']
myObj['4a56546s6d']
我这样问是因为有些东西(例如HTML中的ID)必须以字母开头。目前,我已将钥匙和fireBug标记为蓝色(以数字开头)。

请参见本页:

JavaScript标识符必须以字母、下划线(_)或美元符号($)开头;后续字符也可以是数字(0-9)。因为JavaScript是区分大小写的,所以字母包括字符“A”到“Z”(大写)和字符“A”到“Z”(小写)

您可以这样使用它,但是您将无法使用myObj.4a56546s6d访问数据,因为不允许以数字开头标识符。

如果您的键(属性名)是字符串文字,那么将数字作为其第一个字符是完全有效的


有关JS中有效密钥的更多信息,请参见问题的答案。

如果使用
[string]
访问密钥,您可以使用任何密钥,甚至是带有空格的密钥。所有这些都是有效的:

myObj['key with space']
myObj['12345']

但是,如果要使用点
运算符访问密钥,则密钥必须是有效标识符,这意味着它们不能以数字开头或包含空格

通过点运算符,您可以访问不包含空格或特殊字符的键的值,以及从数字开始的单词(即不能用作eg变量名的单词),否则您可以像关联数组中的键一样对它们进行任何引用

您可以使用任意键,但请记住,该键将是您输入内容的字符串表示形式。澄清-将被称为toString()

看:

您可以重写
toString()
方法,例如:

Object.prototype.toString = function(){ return "object"}

a = {};
a[ {} ] = "whatever";
alert( a["object"] ); // alerts "whatever" because as now toString() returns "object" from each created object

如果它不被允许,你会得到一个错误。非常说明性的例子,+1。但是孩子们,不要在家里重写
Object.prototype
方法。太危险了。
Object.prototype.toString = function(){ return "object"}

a = {};
a[ {} ] = "whatever";
alert( a["object"] ); // alerts "whatever" because as now toString() returns "object" from each created object