关于underscore中_.invoke的小疑问

发布于 2022-09-01 12:58:53 字数 475 浏览 11 评论 0

underscore1.3.3 的_.invoke 这个function是这样的:

 _.invoke = function(obj, method) {
    var args = slice.call(arguments, 2);
    return _.map(obj, function(value) {
      return (_.isFunction(method) ? method || value : value[method]).apply(value, args);
    });
  };

请问下面这句代码中为什么三元运算符中要加个逻辑或的判断,有什么作用呢?是出于什么样的考虑?我去掉后好像也没发现什么错误。

return (_.isFunction(method) ? method || value : value[method]).apply(value, args);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

相权↑美人 2022-09-08 12:58:53

underscore写错了吧,这个或一点用也没有,还有可能出现value[method]不是函数的问题。所以新的underscore已经修改了这个方法的实现:

_.invoke = restArgs(function(obj, method, args) {
    var isFunc = _.isFunction(method);
    return _.map(obj, function(value) {
        var func = isFunc ? method : value[method];
        return func == null ? func : func.apply(value, args);
    });
});

这样好多了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文