javascript - 关于underscore中_.invoke的小疑问
天蓬老师
天蓬老师 2017-04-10 15:28:58
[JavaScript讨论组]

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);
天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(1)
ringa_lee

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);
    });
});

这样好多了。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号