爲什麼RegExp /^\w+$/
匹配undefined
?
示例代碼:
alert(/^\w+$/.test(undefined));
(I測試了僅瀏覽器)這將顯示在Firefox 3真。
爲什麼RegExp /^\w+$/
匹配undefined
?
示例代碼:
alert(/^\w+$/.test(undefined));
(I測試了僅瀏覽器)這將顯示在Firefox 3真。
當undefined
被轉換爲字符串(正則表達式)時,它會生成字符串"undefined"
,然後匹配。
/(\w)(\w)(\w)(\w)(\w)/.exec(undefined);
回報:["undef", "u", "n", "d", "e", "f"]
它是作爲字符串"undefined"
處理不確定的。
請參閱ECMAScript規範第15.10.6.2節的RegExp.prototype.exec(字符串),它將從.match方法調用。當它被評估爲真時,匹配基本上是可執行的。
這裏是從說明書字字: 執行鍼對正則表達式串的正則表達式匹配,並返回包含匹配的結果Array對象,或空,如果該字符串不匹配 的字符串的ToString(字符串)搜索正則表達式模式的發生如下:
正如你所看到的,它會將任何輸入轉換爲一個字符串,所以undefined變成'undefined',並且將匹配爲true。
在命令行中使用JScript在瀏覽器外部測試此功能,並獲得相同的結果。
有意義,雖然這有點不直觀。 – cdmckay 2009-07-06 02:58:48