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/