首页 javascript中要避免与 null 进行比较

javascript中要避免与 null 进行比较

子恒 2016-6-1 0 1795
由于 JavaScript 不做任何自动的类型检查,所有它就成了开发人员的责任。因此,在 JavaScript 代码
中其实很少进行类型检测。最常见的类型检测就是查看某个值是否为 null。但是,直接将值与 null
比较是使用过度的,并且常常由于不充分的类型检查导致错误。看以下例子:

function sortArray(values){
    if (values != null){ //避免!
        values.sort(comparator);
    }
}

该函数的目的是根据给定的比较子对一个数组进行排序。为了函数能正确执行, values 参数必需
是数组,但这里的 if 语句仅仅检查该 values 是否为 null。还有其他的值可以通过 if 语句,包括字
符串、数字,它们会导致函数抛出错误。
现实中,与 null 比较很少适合情况而被使用。必须按照所期望的对值进行检查,而非按照不被期
望的那些。例如,在前面的范例中, values 参数应该是一个数组,那么就要检查它是不是一个数组,

而不是检查它是否非 null。函数按照下面的方式修改会更加合适:

function sortArray(values){
	if (values instanceof Array){ //推荐
		values.sort(comparator);
	}
}
该函数的这个版本可以阻止所有非法值,而且完全用不着 null。

这种验证数组的技术在多框架的网页中不一定正确工作,因为每个框架都有其自
己的全局对象,因此,也有自己的 Array 构造函数。如果你是从一个框架将数组传
送到另一个框架,那么就要另外检查是否存在 sort()方法。


如果看到了与 null 比较的代码,尝试使用以下技术替换:
 如果值应为一个引用类型,使用 instanceof 操作符检查其构造函数;
 如果值应为一个基本类型,使用 typeof 检查其类型;
 如果是希望对象包含某个特定的方法名,则使用 typeof 操作符确保指定名字的方法存在于对
象上。
代码中的 null 比较越少,就越容易确定代码的目的,并消除不必要的错误。

免责声明:本文仅代表作者个人观点,与本网站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
作者: 子恒 本文最后编辑于2016-6-1 10:14:41
子恒

前端工程师,emlog模版beginning开发者

作者的微博

发表评论