为了账号安全,请及时绑定邮箱和手机立即绑定

underscore.js里内部函数flatten的一个递归问题?

underscore.js里内部函数flatten的一个递归问题?

千巷猫影 2018-11-15 14:11:17
var flatten = function(input,shallow,strict,startIndex){    var output = [], idx =0;    for(var i = startIndex || 0,length =input && input.length;i < length;i++){        var value = input[i];        if(isArrayLike(value)           &&(_.isArray(value) ||_.isArguments(value))){            if(!shallow) value = flatten(value,shallow,strict);//这里的value递归不是很懂,具体细节是怎样的?麻烦大神讲解一下            var j = 0, len = value.length;            output.length += len;            while(j<len){                output[idx++] = value[j++];            }        }else if(!strict){            output[idx++] = value;        }    }    return output;};
查看完整描述

1 回答

?
HUWWW

TA贡献1874条经验 获得超12个赞

if(isArrayLike(value) //注意这一句

到最后一层已经不是数组了,不会进这个if,会走到下面这里

else if(!strict){
            output[idx++] = value;
        }

因此你的担心不存在


查看完整回答
反对 回复 2018-12-06
  • 1 回答
  • 0 关注
  • 452 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信