gpt4 book ai didi

javascript - 返回之前增加堆栈长度 - 为什么它有效?

转载 作者:行者123 更新时间:2023-11-28 19:03:09 25 4
gpt4 key购买 nike

下面是我为堆栈实现的一些方法。我无法理解为什么在 .pop() 函数中,您可以在返回相关值之前递减长度,但仍返回正确的值。这是为什么?这与引用与值(value)有关吗?直觉上我会认为,如果我在 pop 中的 return 语句之前递减,它将返回我想要的值之前的值,而不是正确的值。

stackMethods.pop = function(){

if(this.length > 0){
this.length--; //why does decrementing here still return
//the correct value here:
return this.storage[this.length];
}

}

stackMethods.push = function(val){
this.storage[this.length] = val;
this.length++;
}

stackMethods.size = function(){
return this.length;
}

最佳答案

数组的最后一个元素位于索引 length - 1 处,因为数组索引从 0 开始。

想象一下这样一种情况,你的对象只有一个元素,然后你调用 pop。该元素将位于 this.storage[0],但 this.length === 1。您可以访问 this.storage[ this.length - 1 ],然后递减 this.length,或者像您显示的代码一样先递减它。

如果数组自己的 length 属性递减,则会从数组中删除最后一个元素,但 length 属性不是数组的属性,因为实际的数组位于 this.storage 中,并且要递减的属性是 this.length 而不是 this.storage.length

关于javascript - 返回之前增加堆栈长度 - 为什么它有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32174506/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com