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

variable check (extension of discussion 5113374)

本文关键字:扩展 5113374 讨论 检查 变量      更新时间:2023-09-26

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

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

所以我想出了这个:

(!Bigobject.option == false) ,如果 option 尚不存在,则返回 false,如果它已设置为任何内容,包括"无"或空字符串、对象或数组,则返回true

我想了解的:

这是一种奇怪的做法吗?"合法"吗?这会始终如一地工作吗?我应该以不同的方式做吗?感谢您的帮助。

对我来说,

这是关于功能之后的可读性。

(!Bigobject.option == false)阅读你没有做过的东西是令人困惑的。 尝试以从未见过您的代码的人的身份阅读您的代码。 你能预测什么(!Bigobject.option == false)会立即回来吗?

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

要执行您的要求:返回变量存在的布尔值。 我会使用 (typeof(Bigobject.option) === "undefined"),除非Bigobject.option有可能成为字符串"undefined"

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

这是一种奇怪的做法吗?"合法"吗?

  • IMO 这很奇怪,但我很确定这是合法的。 JSLINT 会警告您"=="。

这会始终如一地工作吗?

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

我应该以不同的方式做吗?

  • 我建议你这样做。