js数组中有值但是长度为0

为什么明明res数组中是有值的但是长度为0呢?

var backTracking = function (nums, res, allRes, used) {
  if (res.length === nums.length) {
    console.log(res);
    allRes.push(res);
    return;
  }
  for (let i = 0; i < nums.length; i++) {
    if (used[i]) {
      continue;
    }
    res.push(nums[i]);
    used[i] = true;
    backTracking(nums, res, allRes, used);
    res.pop(nums[i]);
    used[i] = false;
  }
};

let res = [],
  allRes = [],
  used = [],
  nums = [1, 2, 3];
for (let i = 0; i < used.length; i++) {
  used[i] = false;
}
backTracking(nums, res, allRes, used);
console.log(allRes);

img

那是因为console.log()打印时是有值的,值就是黑色字体显示的部分。
而紫红色显示的部分是系统取出来所打印变量的真实内容(icon图标i 鼠标放上去显示的是刚刚估算出来的值)。
因为你这段代码,在打印后,随即下面的代码就改变了该变量的值。

打印 length也是0吗

这里面的应该是没有值的吧

img

你的下面重置了res = [], 您觉得会有值么,
代码执行顺序的问题 前后调整一下