Javascript boolean 运算符混淆

标签 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

我很困惑,谁能帮助理解:

  1. 为什么这两个 boolean 语句都被评估为 truefalse 而它们本来是相反的?
  2. ChromeNode.js 在计算这两个 boolean 语句时有什么区别?

最佳答案

我认为这似乎不是一个答案,但是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
>

enter image description here

我敢打赌,这是因为重新使用了全局正则表达式。

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

关于Javascript boolean 运算符混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52846456/

相关文章:

javascript - 使用 jQuery 检查页面加载时的所有复选框

javascript - Ember.js 路由和连接 socket

javascript - 如何使用回调函数履行 promise ?

javascript - 将另一个数组作为属性放入另一个数组失败

javascript - 为什么 Infinity == Infinity == 1/0 是错误的?

node.js - 我如何将 1 存储为双 Mongoose ,mongodb?

javascript - 使用正确的后备路由结构从 Nodejs 中的异步调用传递数据的最佳实践

google-chrome - 如何仅向测试人员发布新版本的 Chrome 扩展

google-chrome - 如何在本地计算机上以编程方式访问 Google Chrome 浏览器历史记录

javascript 注入(inject) $http post 方法不起作用