gpt4 book ai didi

javascript - 为什么 JavaScript 字典键不能使用 myDict.123 语法以数字开头?

转载 作者:行者123 更新时间:2023-12-03 10:37:48 24 4
gpt4 key购买 nike

前言

这个问题的答案很可能是“因为 JavaScript 的创建者决定如此”。大多数情况下,我只是好奇这个决定背后是否有特定的推理,除了与其他标识符/变量名称和其他语言的一致性之外。

问题

这是合法的:

var foo = { "1abc": "bar", 1: "lol" };
document.write(foo["1abc"]);
document.write(foo[1]);

其中第 2-3 行不合法:

var foo = { "1abc": "bar", 1: "lol" };
document.write(foo.1abc);
document.write(foo.1);

我还没有使用过标识符可以以数字开头的语言,但在 JavaScript 之前,我也没有使用过可以使用 dict[index] 引用字典值的语言>dict.index 语法。

我不确定字典键是否被视为标识符。如果是的话,那么这个问题就很简单了。

话又说回来,我不太清楚为什么 JavaScript 标识符不能以数字开头,因为数字是 Number 类型。在其他语言(例如 C#)中,数字具有 intlongdouble 等类型,导致 5L5D 分别指定“5 as long”和“5 as double”。因此,理论上,JavaScript 标识符可以以数字开头,而且没问题(我认为)。

C#:

var x = 5L; // x is long type
var y = 5D; // x is double type

JavaScript:

var x = 5L; // syntax error
var y = 5D; // syntax error

所以,我的猜测是,为了与其他语言保持一致,JavaScript 标识符不能以数字开头,并且为了与其他 JavaScript 保持一致,不能使用 dict.123 语法引用 JavaScript 字典键身份标识。这是唯一的原因吗?

最佳答案

我想你已经回答了你自己的问题。 “因为 JavaScript 的创造者如此决定。”

来自msdn:https://msdn.microsoft.com/en-us/library/ie/67defydd%28v=vs.94%29.aspx

最后,您正在处理的是对象文字,而不是字典。 Javascript 有两种针对不同场合检索成员属性的方法。 “。”语法用于静态访问,“[]”用于动态访问。考虑以下因素:

var myObj = {
x:"foo",
getX: function() {return this.x;}
};

var get = "get";
var X = "X";
alert(myObj[get+X]()); //Alerts "foo";

Javascript 可以让你做一些非常动态的事情,这通常会导致代码非常难以维护,但它仍然很酷。

关于javascript - 为什么 JavaScript 字典键不能使用 myDict.123 语法以数字开头?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28918324/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com