1

当我这样做时,我很惊讶:

var s = "Cities of the Internet";
var strings = s.split(" ");
alert (s[2]); // shows t!!!!!

当然我意识到我的意思是字符串[2],但是为什么下标字符串会产生一个字符。我在阅读 JavaScript 书籍时是否遗漏了什么?我大概做到了。这是标准吗?

4

4 回答 4

1

如果你想要一个规范的参考,你应该寻找 ECMA-262 规范。有一个我觉得很方便的HTML 版本。

为了能够通过索引访问特定字符,第 15 节是我要开始的地方。我在那里看到了一些相关的材料。

§ 15.5.5字符串实例的属性

名为属性的数组索引对应于字符串值的各个字符。一个特殊的 [[GetOwnProperty]] 内部方法用于指定数组索引命名属性的数量、值和属性。

这又指的是§ 15.5.5.2,因为这是定义 [[GetOwnProperty]] 的地方。该规范相当密集且难以阅读,但如果您想要某种关于为什么会发生这种情况的规范描述,那就是它。

于 2012-05-08T00:48:07.097 回答
0

因为 s[2] 等于“互联网城市”[2]。正确的代码是:

var s = "Cities of the Internet";
var strings = s.split(" ");
alert (strings [2]); // shows the!!!!!
于 2012-05-08T00:35:42.950 回答
-1
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]);  

不,我不会为这样一件微不足道的事情指出一本书的章节。

于 2012-05-08T00:34:59.880 回答