当我这样做时,我很惊讶:
var s = "Cities of the Internet";
var strings = s.split(" ");
alert (s[2]); // shows t!!!!!
当然我意识到我的意思是字符串[2],但为什么下标字符串会产生一个字符。我在阅读JavaScript书籍时是否遗漏了什么?我可能做到了。这是标准吗?
答案 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]);
不,我不会指出你这本小事的书章。