Javascript布尔运算符混淆
我有几行javascript代码,如下所示:Javascript布尔运算符混淆,javascript,node.js,google-chrome,boolean,boolean-operations,Javascript,Node.js,Google Chrome,Boolean,Boolean Operations,我有几行javascript代码,如下所示: var str = '////'; var re = /^\/+$/g console.log(str && re.test(str), str && !re.test(str)); Node.js中的代码输出为false,false,而Chrome客户端的代码输出为true,true 我很困惑,谁能帮我理解一下: 为什么这两个布尔语句的计算结果都是true或false,而它们是相反的 在计算这两个布尔语句时,C
var str = '////';
var re = /^\/+$/g
console.log(str && re.test(str), str && !re.test(str));
Node.js
中的代码输出为false,false
,而Chrome
客户端的代码输出为true,true
我很困惑,谁能帮我理解一下:
true
或false
,而它们是相反的李>
Chrome
和Node.js
之间有什么区别李>
来自(我的):
与exec()
(或与之结合使用)一样,test()
调用多个
同一全局正则表达式实例上的时间将提前过去
上一场比赛
因此,由于正则表达式是全局表达式,因此会发生以下情况:
var str='/';
var re=/^\/+$/g;
console.log(重新测试(str));//“true”-匹配和正则表达式前进
console.log(重新测试(str));//“false”-余数不再匹配
我认为这似乎不是答案,但Node.js特此输出:
true true
这是一个终端控制台
PS E:\DevRoom\Kindy> node
> str = '////'
'////'
> re = /^\/+$/g
/^\/+$/g
> console.log(str && re.test(str), str && !re.test(str))
true true
undefined
>
我打赌这是因为重新使用了全局正则表达式。
var regex1 = RegExp('foo*');
var regex2 = RegExp('foo*','g');
var str1 = 'table football';
console.log(regex1.test(str1));
// expected output: true
console.log(regex1.test(str1));
// expected output: true
console.log(regex2.test(str1));
// expected output: true
console.log(regex2.test(str1));
// expected output: false
节点中的代码的计算结果似乎为
true
和true
,对于我来说,非常确定您的问题来自重新使用全局正则表达式谢谢!这就解释了。我在node中得到false
的原因是因为我的原始代码在两个&&运算符之前记录了重新测试(str)。谢谢。这确实是原因。很抱歉,我无法将你的帖子标记为答案,因为另一篇帖子比你的来得早。没关系,谢谢。顺便说一句,你可以投我一票⚆ ͜ʖ ͡⚆你真棒!