在Actionscript3和Javascript中,这些语句都给出了相同的结果:
/\S/.test(null) => true /null/.test(null) => true /m/.test(null) => false /n/.test(null) => true
在这种情况下,似乎将null值转换为字符串"null".
这是Ecmascript中的已知错误还是我错过了什么?
这是不是一个错误,但是你是对的,null
强求来'null'
和行为上的规范定义的:
RegExp.prototype.test(string)
,内部相当于表达式: RegExp.prototype.exec(string) != null
该exec
方法类型的第一个参数转换为字符串,使用ToString
内部操作(查找所述的步骤1 exec
的方法).
的ToString
内部操作,明确地返回"null"
当输入类型Null
.
总之,在您的示例中,RegExp与字符串匹配'null'
,因此第一个非空格字符,在本例中为字母'n'
.
var a = null+''; // 'null' /\S/.test(a); // true (null+'').match(/\S/) // ["n"]