变量检查(讨论的扩展5113374)

时间:2012-04-18 18:26:36

标签: javascript variables variable-assignment

This discussion很有意思,但我找不到真正适合我的东西,因为我真的只想在对象的存在上返回truefalse。我也非常不喜欢冗长的代码,我正在寻找一种简单易用的方法来编写最简单的东西。

例如,它的定义如下:Bigobject.option但可能尚不存在。

所以我想出了这个:

(!Bigobject.option == false),如果false尚未存在,则返回option,如果已设置为true,则返回{{1}},包括“无”或空字符串,对象或数组。

我想了解的内容:

这是一种奇怪的方式吗?它是“合法的”吗?这是否能够始终如一地运作?我应该以不同的方式做吗?谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

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

(!Bigobject.option == false)很难读到你没有做过的事情。尝试将您的代码读作以前从未见过您的代码的人。你能预测(!Bigobject.option == false)会立即返回什么吗?

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

做你要问的事:返回一个变量存在的bool。我会使用(typeof(Bigobject.option) === "undefined"),除非Bigobject.option可能是字符串"undefined"

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

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

  • IMO很奇怪,但我很确定这是合法的。 jslint会警告你“==”。

这是否能够始终如一地运作?

  • 如果Bigobject.option = false,则返回false。

我应该采取不同的方式吗?

  • 我建议你这样做。