javascript - 为什么 && 运算符会发生这种矛盾的行为?

标签 javascript node.js express

const {DEMO, PORT, LOCAL} = process.env;
const socketAddress = (DEMO & LOCAL)? `http://${hostname}:${PORT}`: `wss://${hostname}`;

DEMO 为 false,PORT 未定义,LOCAL 为 true

主机名是http://9f9cbf19.ngrok.io

我通过 console.log 仔细检查了所有值

因为 (DEMO && LOCAL) === (false && true) === false,第二个表达式 wss://${hostname} 应分配给 socketAddress

令人难以置信的是,这并没有发生。

下面是我记录的一些内容以及我在控制台中返回的内容。

`console.log('DEMO '+DEMO+' LOCAL '+LOCAL)`

在我的控制台中:DEMO false LOCAL true

很正常

console.log('DEMO && LOCAL 返回 '+(DEMO && LOCAL))

在我的控制台中:DEMO && LOCAL 返回 true

不正常。这怎么可能

`console.log('false && true returns '+(false&&true))`

在我的控制台中:false && true 返回 false

完全正常...那么,如果 DEMO 为 false 并且 LOCAL 为 true(如我之前的日志所示),为什么 DEMO && LOCAL 不返回相同的结果?

我刚刚发现 LOCAL && DEMO 返回 false。

如何LOCAL && DEMO === false 和 `DEMO & LOCAL === true

最佳答案

这是因为您从 process.env 进行分配,它是字符串数据类型。

console.log("false" && "true") //will print true.

将值转换为 bool 值

关于javascript - 为什么 && 运算符会发生这种矛盾的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48221723/

相关文章:

node.js - Node.js 的图像比较库

node.js - Node gm - 调整图像大小并保持纵横比?

node.js - 在 react 中从数据库获取数据的正确方法是什么?

node.js - 类型错误 : Cannot read property '0' of undefined passport-facebook

angularjs - express 4 : How do I send JSON object to view?

javascript - 滚动时向上或向下移动 Box/Div

javascript - 提供 "extendedEncoded"数据时结果失真

javascript - 更改 JavaScript 中的 if 条件

javascript - Ui路由器刷新问题

javascript - 使用异步等待时无法获取对象的属性