既然你可以存储一个正则表达式中的变量如何比较两个正则表达式?
var regexp = /a/;
为什么
console.log(/a/ == /a/);
甚至
var regexp1 = /a/;
var regexp2 = /a/;
console.log(regexp1 == regexp2);
都返回false
?
既然你可以存储一个正则表达式中的变量如何比较两个正则表达式?
var regexp = /a/;
为什么
console.log(/a/ == /a/);
甚至
var regexp1 = /a/;
var regexp2 = /a/;
console.log(regexp1 == regexp2);
都返回false
?
试试这个:
String(regexp1) === String(regexp2))
,因为这两个是不同的对象你得到错误的。
只是猜测 - 但JavaScript不会为您的正则表达式创建一个RegExp
对象,因此您创建了两个不同的对象(即使它们具有相同的“值”),但它们实际上有所不同吗?
对于像int,string,boolean这样的原始数据类型,javascript知道要比较的内容,但对于日期或正则表达式这样的对象,操作符只查看内存中的位置,因为您独立地定义了正则表达式,它们在内存中有两个不同的地方所以他们不平等。
这不是一个猜测,它是正确的答案... +1 – gdoron