当我这样做时,我很惊讶:
var s = "Cities of the Internet";
var strings = s.split(" ");
alert (s[2]); // shows t!!!!!
当然我意识到我的意思是字符串[2],但是为什么下标字符串会产生一个字符。我在阅读 JavaScript 书籍时是否遗漏了什么?我大概做到了。这是标准吗?
当我这样做时,我很惊讶:
var s = "Cities of the Internet";
var strings = s.split(" ");
alert (s[2]); // shows t!!!!!
当然我意识到我的意思是字符串[2],但是为什么下标字符串会产生一个字符。我在阅读 JavaScript 书籍时是否遗漏了什么?我大概做到了。这是标准吗?
如果你想要一个规范的参考,你应该寻找 ECMA-262 规范。有一个我觉得很方便的HTML 版本。
为了能够通过索引访问特定字符,第 15 节是我要开始的地方。我在那里看到了一些相关的材料。
§ 15.5.5字符串实例的属性
名为属性的数组索引对应于字符串值的各个字符。一个特殊的 [[GetOwnProperty]] 内部方法用于指定数组索引命名属性的数量、值和属性。
这又指的是§ 15.5.5.2,因为这是定义 [[GetOwnProperty]] 的地方。该规范相当密集且难以阅读,但如果您想要某种关于为什么会发生这种情况的规范描述,那就是它。
因为 s[2] 等于“互联网城市”[2]。正确的代码是:
var s = "Cities of the Internet";
var strings = s.split(" ");
alert (strings [2]); // shows the!!!!!
var s = "Cities of the Internet";
如我们所见,s
是一个字符串。
var strings = s.split(" ");
现在,strings
是一个字符串数组"Cities", "of", "the", "Internet"
,因为它是通过分割s
一个空格创建的。
alert (s[2]);
您正在提醒 string 的第三个字符(因为它们从 0 开始编号)s
。
"Cities of the Internet"[2] == "t"
这是“城市”一词中的“t”。您的困惑可能源于您想致电
alert (strings[2]);
不,我不会为这样一件微不足道的事情指出一本书的章节。