console.log更改数组长度(容量)

时间:2017-12-18 15:49:22

标签: javascript arrays console.log

我很难理解为什么console.log()的位置会影响我的数组的容量。这是小提琴:https://jsfiddle.net/xbqph81e/4/

以下是代码:

const pressed = [];
const secretCode = '123456';

window.addEventListener('keyup', (e) => {
  console.log(e.key);
  pressed.push(e.key);

  console.log("First Log",pressed); //console.log here = array has capacity of 7 characters
  pressed.splice(-secretCode.length - 1, pressed.length - secretCode.length);

  //console.log("Second Log",pressed); //first console.log is commented and this uncommented = array has capacity of 6 characters
});
.as-console-wrapper { max-height: 100% !important; top: 0; }

有谁知道为什么会这样?

2 个答案:

答案 0 :(得分:0)

在第一个console.log中,您只是将新密钥推送到数组,因此此时长度为7。

之后你调用.splice使数组与秘密长度相同(在本例中为6),所以在此之后数组的长度只有6。

console.log (大多数情况下)会在该点显示该变量的值,恰好是长度为6的数组。

答案 1 :(得分:0)

console.log不会更改您的数组。 它正在被修改,因为splice()方法更改了数组。您可以尝试使用slice()方法,而不是返回一个新数组。如果您选择这样做,则需要分配从pressed.slice()返回的数组。