isNull()的作用是什么?

3

来自下划线库:

_.isNull = function(obj) {
    return obj === null;
  };

为什么您要使用这种方法,而不是直接使用?

obj === null

我不认为这是基于观点的,因为有一个明确的答案 - 用于回调函数中,以便库用户不必再次编写它。我们能重新打开吗? - user3105359
5个回答

4

因为_.isNull可以作为函数参数传递,而obj === null则需要包装在函数中,这意味着使用_.isNull可以节省您自己包装该语句的时间。


@www.arcmarks.com 是的,但似乎我使用得不对。你应该将_.isNull传递给一个函数对象,而不是它本身作为一个函数对象。 - undefined
我觉得这是一个好的问题/答案,你可以请管理员将其公开。谢谢! - user3105359

3
根据变更日志,"for completeness" 是用来完整性的。
0.4.7 版本增加了 "isDate"、"isNaN" 和 "isNull" 方法,以便更加完整。在检查数组或日期之间的相等性时,对 "isEqual" 进行了优化。现在,"_.keys" 的速度提高了 25% - 2 倍(取决于您的浏览器),这加快了依赖它的函数(如 "_.each")的执行速度。

为什么不使用isFalseisTrue呢? - user3105359
NaNNumber类型的值。 - user3105359
实际上,在JavaScript中并不需要isTrue,因为它已经存在。只需将Boolean作为一个函数使用(假设你正在测试对象的真值,而不是严格等于true的值)。 - undefined
显示剩余2条评论

2

语法糖、标准化,还有更小的意外输错==的机会,因此编码更少出错。


1

可能用于迭代器方法,例如.some()

var has_null = collection.some(_.isNull);

拥有可重复使用的函数来实现一些常见的目的是很好的。


1

_.isNull 函数似乎除了用于回调之外并没有太多用处,因此它可能只是为了完整性而存在。当您查看Underscore.JS源代码时,您会发现其他类似的函数并不那么简单:

// Is a given object a finite number?
_.isFinite = function(obj) {
  return isFinite(obj) && !isNaN(parseFloat(obj));
};

// Is the given value `NaN`? (NaN is the only number which does not equal itself).
_.isNaN = function(obj) {
  return _.isNumber(obj) && obj != +obj;
};

// Is a given value a boolean?
_.isBoolean = function(obj) {
  return obj === true || obj === false || toString.call(obj) == '[object Boolean]';
};

// Is a given value equal to null?
_.isNull = function(obj) {
  return obj === null;
};

// Is a given variable undefined?
_.isUndefined = function(obj) {
  return obj === void 0;
};

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接