我在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 次 |
| 最近记录: |