这是一个小的 JavaScript 片段:
var re_words = /\w+/g;
var words;
while (words = re_words.exec(' here are a few (sic!) words ')) {
alert(words);
}
循环会提醒在输入字符串中找到的单词,这正是我所期望的,因为所有 JavaScript 教程都这么告诉我。
现在,typeof(words) 结果为object。
因此,我希望 alert(words) 能够给我 object。
如果我检查words中的元素,我发现它们是0、“index”和“input”。元素words[0]与words提醒的元素相同。
所以,问题是:元素 0 是否是 JavaScript 中对象的默认索引,如果定义了该对象,则返回该索引。
或者以不同的方式问:为什么 alert(words) 与 alert(words[0]) 具有相同的效果?我希望alert(words)给出一个“对象”。
最佳答案
result of executing a regexp是一个数组,它是一种特殊的对象。该数组还有两个属性:索引和输入。 Words[0] 包含匹配的字符。在数组上调用 .toString()
(由 alert()
隐式完成)会用逗号连接数组的元素(在调用 .toString( )
每一个)。在本例中,由于只有一个元素,因此逗号是多余的,因此对数组调用 .toString()
的结果与数组中的第一个元素相同。
(不确定您使用的是什么浏览器;在 Firefox 中,alert(words)
给出 'here'
,然后 'are'
,依此类推,直到最后给出字符串 'words'
。)
关于javascript - object[0] 是 JavaScript 中对象的默认键吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1802763/