关于函数默认参数++后遇到的问题?
下面是一个数组的递归遍历函数,而就只是一个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)
回复
1个回答

test
2024-07-20
如果i正在参与表达式计算,i++会等表达式计算完成后+1,++i会先+1再参与表达式计算
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容