当前位置:  开发笔记 > 编程语言 > 正文

这是Ecmascript中的错误 - /\S/.test(null)返回true吗?

如何解决《这是Ecmascript中的错误-/\S/.test(null)返回true吗?》经验,为你挑选了1个好方法。

在Actionscript3和Javascript中,这些语句都给出了相同的结果:

/\S/.test(null) => true  
/null/.test(null) => true  
/m/.test(null) => false  
/n/.test(null) => true  

在这种情况下,似乎将null值转换为字符串"null".

这是Ecmascript中的已知错误还是我错过了什么?



1> CMS..:

这是不是一个错误,但是你是对的,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"]

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有