对象[0]是否是JavaScript中对象的默认键?

时间:2009-11-26 10:06:37

标签: javascript

这是一个小型JavaScript代码段:

  var re_words = /\w+/g;

  var words;
  while (words = re_words.exec(' here are a few (sic!) words ')) {
     alert(words);
  }

循环警告输入字符串中找到的单词,这是我的预期,因为所有JavaScript教程都告诉我。

现在, typeof(字词)会产生对象

因此,我原本希望警告(文字)给我对象

如果我检查单词中的元素,我发现它们是0,“索引”和“输入”。元素词[0]与用词语提醒的内容相同。

所以,问题是:元素0是JavaScript中Object的默认索引,如果已定义则返回。

或者提出不同的问题:为什么警告(字词)会产生与警告(字[0])相同的效果?我本来希望警告(单词)给出一个“对象”。

1 个答案:

答案 0 :(得分:4)

result of executing a regexp是一个Array,它是一种特殊的Object。该数组还有两个属性,索引和输入。 words [0]包含匹配的字符。在数组上调用.toString()(由alert()隐式完成)用逗号连接数组的元素(在每个数组上调用.toString()之后)。在这种情况下,由于只有一个元素,逗号是多余的,因此在数组上调用.toString()的结果与数组中的第一个元素相同。

(不确定您使用的是什么浏览器;在Firefox中,alert(words)提供'here',然后提供'are',依此类推,直到最后它提供字符串'words'。 )