gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 02:55:45 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com