我很难理解为什么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; }
有谁知道为什么会这样?
答案 0 :(得分:0)
在第一个console.log
中,您只是将新密钥推送到数组,因此此时长度为7。
之后你调用.splice
使数组与秘密长度相同(在本例中为6),所以在此之后数组的长度只有6。
console.log
(大多数情况下)会在该点显示该变量的值,恰好是长度为6的数组。
答案 1 :(得分:0)
console.log
不会更改您的数组。
它正在被修改,因为splice()
方法更改了数组。您可以尝试使用slice()
方法,而不是返回一个新数组。如果您选择这样做,则需要分配从pressed.slice()
返回的数组。