首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何检查javascript布尔元素是否存在

如何检查javascript布尔元素是否存在
EN

Stack Overflow用户
提问于 2017-08-01 12:48:47
回答 5查看 5.1K关注 0票数 7

此时,我检查node.js对象中的元素是否存在,并通过以下操作获得值:

代码语言:javascript
运行
复制
if(req.body.name) item.name = req.body.name;

但是,如果我想对布尔元素执行同样的操作,它就不能工作。如果传递的布尔值为true,则没有问题,但如果传递的布尔值为false,则If语句将失败,但是,我需要它的值:

代码语言:javascript
运行
复制
if(req.body.active) item.active = req.body.active; // works only if true

是否有更好的方法来检查对象中的元素是否存在并验证它的布尔值?

EN

Stack Overflow用户

发布于 2017-08-01 13:22:18

此时,我检查node.js对象中的元素是否存在,并通过以下操作获得值: if(req.body.name) item.name = req.body.name;

如果req.body.name是空字符串,这也会“失败”(输入引号,因为空名称很奇怪,但可能不是错误)。

我可以想到以下几点:

  • inif ('name' in req.body)
  • hasOwnPropertyif (req.body.hasOwnProperty('name')
  • 类型的if (typeof req.body.name === 'boolean')还是if (typeof req.body.name !== 'undefined')

然而,它们都有其优点和缺点,为了完整起见,我想指出这一点:

  • 如果有人做了类似于tyepof的事情(但在现代浏览器中可能是不可能的),那么tyepof就会失败。
  • 如果属性存在,则hasOwnProperty失败,但它是继承的。
  • in不需要(根据用例的不同,这可能是不需要的)
票数 5
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45438297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档