console.log(/\.js$/.toString() === '/\.js$/') // false
// or
console.log(/\.js$/.toString() == '/\.js$/') // false
// but
console.log(/\.js$/.toString()) // /\.js$/
console.log(/\.js$/.toString() === /\.js$/.toString()) // true
答案 0 :(得分:3)
因为转换为字符串时,\
的含义会发生变化。在字符串中,它用于转义字符,例如\n
和\t
。在正则表达式中,它意味着从字面上理解下一个字符,例如.
。因此,当转换为字符串\
时必须进行转义,因此/\.js$/
变为"/\\.js$/"
。请注意,如果您随后将其提供给RegExp
构造函数,则"\\.js$"
将有效,而"\.js$"
具有不同的含义,并被解释为/.js$/
答案 1 :(得分:1)
\
是字符串文字中的一个特殊字符,用于转义下一个字符。使用其中的2个。
console.log(/\.js$/.toString() === '/\\.js$/') // true

答案 2 :(得分:1)
因为字符串' $.each( $(".form-check-input"), function() {
console.log('iterating');
$(this).prop('checked', true);
});
'变为 /\.js$/
,所以会发生这种情况,因为'。 js中的' 实际上是scaped角色。
所以基本上你要比较' /.js$/
' /\.js$/
是不同的字符串。
通过将字符串文字更改为/.js$/
答案 3 :(得分:1)
查看自己的差异,console.log(/\.js$/.toString());
打印/\.js$/
,console.log('/\.js$/');
打印\.js$/
,这显然是不同的。(因为两个字符串不同,你会得到假的)< / p>
console.log(/\.js$/.toString());
console.log('/\.js$/');
&#13;