javascript - bool 值 if 语句的技巧

标签 javascript node.js

我正在获取自定义 header 值,并且我收到的值是正确的。预期值为:true、false、undefined
然而,基于这样的值的响应:false是不正确的。

片段

let isMobileDevice = req.headers["is-mobile-device"];
console.log(isMobileDevice);

if(isMobileDevice) {
    console.log("Mobile client");
    return res.sendStatus(200);
}
else {
    console.log("Web Client");
    return res.sendStatus(200);
}

输出

[0] undefined
[0] Web Client
[0] POST /api/v1/authorization 200 92.690 ms - 2
[0] false
[0] Mobile client
[0] POST /api/v1/authorization 200 76.601 ms - 2
[0] true
[0] Mobile client
[0] POST /api/v1/authorization 200 74.978 ms - 2

我可能做错了什么,但我真的找不到哪里。

最佳答案

您在 isMobileDevice 中获取的值不是 bool 值(truefalse),而是字符串('true''false')。
当在 bool 上下文中求值时,两者都相当于 true ( bool 值)。

您应该将 isMobileDevice 与字符串进行比较:

if (isMobileDevice === 'true') {
    // do something
} else {
    // do something else
}

在 bool 上下文(即作为条件)中使用时,false0""nullundefinedNaN 被视为 false,所有其他值均被视为 true
阅读有关 JavaScript 中 truthy 值的更多信息: https://developer.mozilla.org/en-US/docs/Glossary/Truthy

关于javascript - bool 值 if 语句的技巧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55411187/

相关文章:

javascript - [[Prototype]] vs prototype : . .有什么区别? (MyCons.__proto__ === MyCons.prototype) 等于 FALSE

javascript - 加载新页面时如何调整模式 iframe 的大小?

node.js - 检查 Mongoose 验证错误的最佳方法

javascript - 如何将 nodemon 与 .env 文件一起使用?

node.js - 为什么后端需要 Jade 或 EJS 等模板引擎?

javascript - Jquery插入具有可排序位置的列表元素

javascript - 我应该如何处理要删除的对象的事件处理程序?

javascript - 文本框值更改后立即更新 Knockout.js View 模型

node.js - 使用 Node.JS 将一个函数的值返回到另一个函数

javascript - 对象未定义到模块中,Nodejs javascript