1

这个讨论很有趣,但我一直找不到真正适合我的东西,因为我真的只想返回truefalse对象的存在。我也非常不喜欢冗长的代码,并且正在寻找一种简单易行的方式来写东西,而且不会大惊小怪。

例如,它应该这样定义:Bigobject.option但这可能还不存在。

所以我想出了这个:

(!Bigobject.option == false),false如果它option还不存在,并且true它已被设置为任何值,包括“无”或空字符串、对象或数组,则返回。

我想了解的:

这是一种奇怪的方法吗?是否“合法”?这会始终如一地工作吗?我应该做不同的事情吗?谢谢您的帮助。

4

1 回答 1

1

对我来说,这是关于功能之后的可读性。

(!Bigobject.option == false)阅读您尚未从事的工作时会感到困惑。尝试以从未见过您的代码的人的身份阅读您的代码。你能预测什么(!Bigobject.option == false)会立即返回吗?

我同意链接问题中选择的答案,因为(Bigobject.option === null)作为新读者,您(可能)会知道什么。

做你所要求的:返回一个变量存在的布尔值。(typeof(Bigobject.option) === "undefined")除非有可能Bigobject.option成为字符串,否则我会使用"undefined"

编辑:我意识到我并没有真正回答你的问题......

这是一种奇怪的方法吗?是否“合法”?

  • IMO 这很奇怪,但我很确定这是合法的。jslint 会警告您有关“==”的信息。

这会始终如一地工作吗?

  • 如果 Bigobject.option = false 它将返回 false。

我应该做不同的事情吗?

  • 我建议你这样做。
于 2012-04-18T18:51:51.567 回答