Kev*_*son 9 javascript underscore.js angularjs lodash
我正在审查一些源代码,而下划线/ lodash仅包含在该_.isBoolean函数中.的下划线源是以下:
_.isBoolean = function(obj) {
return obj === true || obj === false || toString.call(obj) == '[object Boolean]';
};
Run Code Online (Sandbox Code Playgroud)
看着在NG功能部件我看到类似的功能(angular.isObject,angular.isString,angular.isNumber等),但没有angular.isBoolean作用.
该angular.js源这有一个内部的功能(如下源),但请求的问题,使公众(壮举:注册isBoolean作为全球角度#5185公共成员)被封说:"其他图书馆像下划线和lodash解决这些问题好".
function isBoolean(value) {
return typeof value === 'boolean';
}
Run Code Online (Sandbox Code Playgroud)
问题:
isBoolean在我的代码中复制并创建一个命名函数,但哪个实现更正确?angular.isBoolean?Ber*_*rgi 14
我正在审查一些源代码,而下划线/ lodash仅包含在_.isBoolean函数中.[...]我最初的反应是将isBoolean转换为本地函数
是的,好主意(如果你强调正义).也许甚至不是一个功能,而只是内联它.
但哪种实施更正确?
当传入Boolean类的实例的对象时,它们的行为会有所不同.在您正在查看的应用程序中是否会出现这种情况?可能不是.如果他们这样做,只有你会知道你是否想把它们视为布尔.
除此之外,val === true || val === false具有相同的效果typeof val == "boolean".
我认为将我的实现"扯下来"是一个坏主意
angular.isBoolean?
角度不太可能做到这一点,所以你几乎不会引发碰撞.不过,问问自己:它在那里真的有用吗?其他代码会使用它吗?有关更多讨论,请查看" 不要修改您不拥有的对象".