为什么(new RegExp(“w”)==/w/)在JS中为false
Why is (new RegExp("w") === /w/) false in JS?
我在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
我不明白它为什么这么做。
它们是两个不同的RegExp
实例,因此通过直接将它们与==
或===
进行比较,可以比较两个不相等的引用,从而生成false
。
但是,当您比较它们的toString()
序列化或它们的源时,您是在按值比较它们的字符串表示。由于它们基本上是完全相同的模式和标志,比较它们的字符串表示将返回true
。
这是MDN:上Comparison Operators文档中的一句话
请注意,当且仅当comparand是一个基元如果两个操作数都是对象,则它们是作为对象进行比较,并且只有当两者都引用时,相等性测试才为真相同的对象
CCD_ 7是对象,CCD_。两者分别实例化。需要我多说几句吗?
相关文章:
- 为什么(new RegExp(“w”)==/w/)在JS中为false
- _.数组中的每个查找值都返回 true 或 false.使用下划线 JS
- 为什么我的JS"如果“;语句的求值结果总是为false
- 比较JS中的换行符返回false
- Node.js中的Number.isNaN('asd')===false!什么给予
- 在unslider.js中设置true或false
- 谁在Unslider.js中传递false
- 为什么 true == JS中的“true”语句返回false
- JS queryCommandState(“superscript”) 总是返回 false
- 在默认情况下将可枚举设置为 false 的 JS 中创建对象属性的其他方法是什么
- 如何在 js 中获取 false 作为返回后停止 php 执行
- Backbone.js`isNew`在`model.save()`之后未返回`false`事件
- 这个js表达式安全吗:if(!x||doSomething(x[prop],y[prop])===false)
- 如何在Meteor JS中将所有ReactiveVars重置为false
- 如果动画设置为false,则Chart.js不会在Android Webview上显示
- underscore.js中的否定词:为什么_isEqual(0,-1*0)返回false
- mark.setDragable(false)在API谷歌地图的main.js中抛出异常
- Node.js在返回true/false时停止函数
- 按下按钮我的网页正在重新加载?我尝试过从js返回false之类的方法,但仍然没有解决方案
- 在JS中是否可以定义regexp,当在输入结束时对给定文本进行测试时,该regexp会给出false