【发布时间】: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