我正在审核一些源代码,而下划线/ lodash仅包含在_.isBoolean
函数中。 underscore source位于以下位置:
_.isBoolean = function(obj) {
return obj === true || obj === false || toString.call(obj) == '[object Boolean]';
};
查看Function components in ng我看到了类似的功能(angular.isObject
,angular.isString
,angular.isNumber
等),但没有angular.isBoolean
功能。
angular.js来源有一个内部函数(下面的源代码),但请求公开(feat: register isBoolean as a public member of global angular #5185)的问题已关闭说"其他库如下划线和lodash解决了这些问题井"
function isBoolean(value) {
return typeof value === 'boolean';
}
问题:
isBoolean
并在我的代码中创建一个命名函数,但哪个实现更正确?angular.isBoolean
?答案 0 :(得分:14)
我正在审查一些源代码,而下划线/ lodash仅包含在_.isBoolean函数中。 [...]我最初的反应是将isBoolean转换为本地函数
是的,好主意(如果你强调只是)。也许甚至不是一个功能,而只是内联它。
但哪种实施更正确?
当传入Boolean
class实例的对象时,它们的行为会有所不同。在您正在审核的应用中是否会出现这种情况?可能不是。如果他们这样做,只有你知道是否要将它们视为布尔值。
除此之外,val === true || val === false
与typeof val == "boolean"
具有相同的效果。
我认为这是一个糟糕的主意" duck punch"我的实施到
angular.isBoolean
?
角度不可能做到这一点,所以你几乎不会引发碰撞。不过,问问自己:它在那里真的有用吗?其他代码会使用它吗?有关更多讨论,请查看Don't modify objects you don't own。