我在Chrome控制台中尝试了以下操作:
var r1 = new RegExp("\\w"); // ? /\w/
var r2 = /\w/; // ? /\w/
r1 === r2; // ? false
r1 == r2; // ? false
r1.toString() === r2.toString(); // ? true
r1.source === r2.source; // ? true
Run Code Online (Sandbox Code Playgroud)
我不明白为什么会那样做.
Bol*_*ock 15
它们是两个不同的RegExp
实例,因此通过直接比较它们==
或者===
您正在比较两个不相等的引用,导致false
.
但是当你比较它们的toString()
序列化或它们的来源时,你要按值比较它们的字符串表示.由于它们基本上是完全相同的模式和标志,因此比较它们的字符串表示将返回true
.
归档时间: |
|
查看次数: |
159 次 |
最近记录: |