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

我有几行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
    ,而它们是相反的
  • 在计算这两个布尔语句时,
    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)。谢谢。这确实是原因。很抱歉,我无法将你的帖子标记为答案,因为另一篇帖子比你的来得早。没关系,谢谢。顺便说一句,你可以投我一票⚆ ͜ʖ ͡⚆你真棒!