下面是一个数组的递归遍历函数,而就只是一个i++和i+1的变化,就产生了两种结果,我不是很理解i++后i为什么不增长,有大佬可以解答一下吗?
/**
数组遍历的递归写法
@param {*} arr 需要遍历的数组
@param {*} i 开始遍历的索引
*/
// 报错,调试的时候发现i一直都是0,++后i也是0,最后导致栈溢出
function bianArr(arr, i = 0) {
if (arr == null || arr.length <= i) return
console.log(arr[i])
bianArr(arr, i++) // i++
}
// 不报错,i可以增加
function bianArr(arr, i = 0) {
if (arr == null || arr.length <= i) return
console.log(arr[i])
bianArr(arr, i + 1) // i + 1
}
bianArr(arr)
如果i正在参与表达式计算,i++会等表达式计算完成后+1,++i会先+1再参与表达式计算