这些未定义的检查在行为上是否相同?

Are these undefined checking identical in behavior?(这些未定义的检查在行为上是否相同?)
本文介绍了这些未定义的检查在行为上是否相同?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我对undefined的(严格相等)检查似乎有不同的方法:

  • if (something === undefined)
  • if (typeof something === 'undefined')
  • if (something === void 0)
  • 可能还有其他

愉快的方案中,它们的行为是相同的。换句话说,它们都有效。

但是,考虑到JavaScript的所有怪异之处,它们的行为真的相同吗?

如果是,为什么人们选择其他方法而不是第一种方法?这是某种遗产还是误解?因为第一个显然在可读性和意图表现上都是最清楚的。

推荐答案

if (something === undefined)是标准的正常方式

typeof something === 'undefined'对已声明变量的typeof something === 'undefined'主要是一种过度防御的解决方案,可以从您可以更改window.undefined的时间开始。如果您不知道变量是否已声明,它的优点是不会引发错误,但我认为合法代码不应该支持声明状态未知的变量。

void 0(或void anything)是获取undefined的规范化方法,因此它等同于第一个方法,但无用。

这篇关于这些未定义的检查在行为上是否相同?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Update another component when Formik form changes(当Formik表单更改时更新另一个组件)
Formik validation isSubmitting / isValidating not getting set to true(Formik验证正在提交/isValiating未设置为True)
React Validation Max Range Using Formik(使用Formik的Reaction验证最大范围)
Validation using Yup to check string or number length(使用YUP检查字符串或数字长度的验证)
Updating initialValues prop on Formik Form does not update input value(更新Formik表单上的初始值属性不会更新输入值)
password validation with yup and formik(使用YUP和Formick进行密码验证)