为什么JavaScript RegExp/^\w + $ /匹配未定义?

cdm*_*kay 20 javascript regex firefox

为什么RegExp /^\w+$/匹配undefined

示例代码:

alert(/^\w+$/.test(undefined));
Run Code Online (Sandbox Code Playgroud)

这将在Firefox 3中显示为true(仅我在其上测试过的浏览器).

Mat*_*ley 44

undefined转换为字符串(正则表达式)时,它会生成字符串"undefined",然后匹配.

  • ___Horrible___语言设计. (4认同)
  • 有道理,虽然它有点不直观. (2认同)

use*_*242 5

/(\w)(\w)(\w)(\w)(\w)/.exec(undefined);  
Run Code Online (Sandbox Code Playgroud)

返回: ["undef", "u", "n", "d", "e", "f"]

它将 undefined 视为 string "undefined"