AngularJS V1.6.6中函数参数传Index++不生效,Index+1却可行?
递归函数索引递增方式导致栈溢出的原因
这本质是JavaScript运算符执行逻辑的问题,和AngularJS版本无关:
先说你踩坑的
recursiveFunction(List, Index++);:
JavaScript的后置++运算符是先返回变量当前值,再完成自增。也就是说,调用函数时,传给递归函数的参数是Index的原始值,等函数调用完成后,Index才会加1。这就导致每次递归都用同一个索引值,永远达不到终止条件,反复调用直到栈溢出。再看两种正确的写法:
recursiveFunction(List, Index + 1);:这种是直接计算出Index加1后的新值,作为参数传递。变量Index本身不变,但每次递归都拿到递增后的正确索引,能正常推进递归流程。- 先执行
Index++;再调用函数:单独执行Index++时,变量会立刻完成自增,之后再把更新后的Index传给递归函数,自然每次索引都是递增的,递归能正常结束。
内容的提问来源于stack exchange,提问作者ianrose2k
相关产品推荐
相关产品推荐

