【问题标题】:How to NOT return the last object in a boolean chain如何不返回布尔链中的最后一个对象
【发布时间】:2017-10-20 05:41:24
【问题描述】:

我有这样的代码:

function doAThing(var1) {
    return typeof var1 === "object" && Object.keys(var1).length > 11;
}

我遇到了一个问题,当var1 不是对象时,函数会尝试返回最后一条语句的值:Object.keys(var1).length > 11)

显然,如果obj1 不是一个对象,我不想尝试获取它的密钥,否则它会被Cannot convert undefined or null to object 炸毁。

我怎样才能让这个函数返回一个布尔值而不是尝试检查var1 的键如果它不是一个对象?

【问题讨论】:

  • 实际上,最后一个条件不应该被评估,因为它在第一个 false 上的快捷方式 - 请参阅 stackoverflow.com/questions/7858787/… 您能否发布导致您的问题的完整代码并告诉我们实际上是什么“爆炸”意思是(你遇到什么错误)?
  • 不确定是否可以使用快捷方式,因为 Object.keys 无论如何都会被评估。
  • @cpugourou 如果它遵循应有的真实/虚假逻辑,我不会这么认为。你确定它会评估吗?
  • 已更新。如果你不能捷径,你会建议什么作为替代?
  • 请注意,您的typeof 在某些情况下不会返回所需的结果。例如,如果var1 是一个数组,则typeof var1 仍将是object。有关详细信息,请参阅here

标签: javascript


【解决方案1】:

尝试为您的条件添加null 检查,因为typeof null 也是object

function doAThing() {
    return !bool1
        && var1 !== null
        && typeof var1 === "object"
        && Object.keys(var1).length > 11);
}

【讨论】:

    猜你喜欢
    • 2021-08-23
    • 1970-01-01
    • 1970-01-01
    • 2019-10-09
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 2021-07-15
    • 2020-05-22
    相关资源
    最近更新 更多