在递归中const定义的变量是否会变化

sort=>( arr, left=0, right=arr.length-1){

let i=0;

let j=right ;

const  baseval=arr[right];

sort (arr, i+1, j-1);

}

都说const定义的变量一旦定义了,就无法改变值。那么在递归中呢?
因为递归的原理是,每次调用自己,都添加一个新函数进栈,这个函数执行完毕就直接弹出栈,所以每次递归调用自己的时候,都是执行新函数的过程,所以每个baseval的作用域都是独立的函数,所以不是同一个作用域,const的本意是:变量第一次定义并赋值后不能再更改,而每次执行函数都是在重新定义变量baseval的过程,每次定义相对于本函数都是第一次。

所以在这个递归过程中,每次的baseval都是变化的。

猜你喜欢

转载自blog.csdn.net/kalinux/article/details/88885828
今日推荐