我有几行javascript代码如下:
var str = '////';
var re = /^\/+$/g
console.log(str && re.test(str), str && !re.test(str));
代码在 Node.js
中的输出是 false, false
而在 Chrome
客户端中是 true, true
我很困惑,谁能帮助理解:
- 为什么这两个 boolean 语句都被评估为
true
或false
而它们本来是相反的? Chrome
和Node.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
>
我敢打赌,这是因为重新使用了全局正则表达式。
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/