在哪里记录字符串下标产生一个字符?

时间:2012-05-08 00:29:55

标签: javascript

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

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

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

4 个答案:

答案 0 :(得分:3)

答案 1 :(得分:1)

如果您想要规范参考,那么您应该寻找ECMA-262规范。我发现有HTML version非常方便。

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

§ 15.5.5字符串实例的属性

  

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

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:-1)

var s = "Cities of the Internet";

如我们所见,s是一个字符串。

var strings = s.split(" ");

现在,strings是字符串"Cities", "of", "the", "Internet"的数组,因为它是通过在空格上拆分s而创建的。

alert (s[2]);

您正在警告字符串s的第三个字符(因为它们从0开始编号)。

"Cities of the Internet"[2] == "t"

这是“城市”一词中的“t”。您的混淆可能源于您想要致电

alert (strings[2]);  

不,我不会指出你这本小事的书章。