为什么我的控制台结果在不同的作用域之间是不同的

时间:2018-09-23 05:41:36

标签: javascript arrays

var permute = function(nums) {
    let list=[];
    generate=function(flag,result){
        if(flag===nums.length){
            list.push(result);//add something to list
            return ;
        } 
        //同位遍历
        for(let i =0;i<nums.length;i++){
            //skip重复
            if(result.includes(nums[i])) continue;
            result.push(nums[i]);
            generate(flag+1,result);
            //递归结束后弹出尾项
            result.pop();
        }
    }
    generate(0,[]);
    console.log(list);//but it's empty
};


permute([1,2,3,4]);

我运行此代码,控制台结果为空。我很困惑。当我在generate函数中的控制台列表不为空时。

1 个答案:

答案 0 :(得分:0)

注释result.pop即可。这是因为Javascript通过引用而不是值传递对象/数组。您可能需要通读以下post才能完全理解