首页 编程开发javascript中要避免与 null 进行比较

javascript中要避免与 null 进行比较

分类:编程开发
字数: 973
评论: 0
阅读: 3681
摘要:

由于 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-06-01 10:14:41

扫描二维码,在手机上阅读