sp0*_*00m 18 javascript regex compare
因为您可以在变量中存储正则表达式
var regexp = /a/;
Run Code Online (Sandbox Code Playgroud)
为什么
console.log(/a/ == /a/);
Run Code Online (Sandbox Code Playgroud)
乃至
var regexp1 = /a/;
var regexp2 = /a/;
console.log(regexp1 == regexp2);
Run Code Online (Sandbox Code Playgroud)
都回归false?
ios*_*seb 36
试试这个:
String(regexp1) === String(regexp2))
Run Code Online (Sandbox Code Playgroud)
你变得虚假,因为这两个是不同的对象.
"问题":
regex是一个object- 引用类型,因此比较是通过引用完成的,这是两个不同的对象.
console.log(typeof /a/); // "object"
Run Code Online (Sandbox Code Playgroud)
如果两个操作数都是对象,则JavaScript比较内部引用,当操作数引用内存中的同一对象时,这些内部引用相等.
解:
?var a = /a/;
var b = /a/;
console.log(???a.toString() === b.toString()); // true! yessss!
Run Code Online (Sandbox Code Playgroud)
另一种"黑客"给力toString()的regexES是:
console.log(a + "" === b + "");?
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5439 次 |
| 最近记录: |