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

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;

};


千巷猫影
浏览 453回答 1
1回答

HUWWW

if(isArrayLike(value)&nbsp;//注意这一句到最后一层已经不是数组了,不会进这个if,会走到下面这里else&nbsp;if(!strict){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output[idx++]&nbsp;=&nbsp;value; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}因此你的担心不存在
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript