Javascript 如何停止递归函数修改它';谁拥有自己的变量?
我正在尝试创建一个使用递归的javascript排序算法。它不断修改自己的变量。我该怎么阻止这一切 例如(psuedocode): 问题是运行sort()会将原始随机值修改为不同的随机值 我尝试过使用“this.varname”,但似乎没有什么不同 我的完整代码是,递归函数在第52行。被覆盖的变量是“大”和“小” 如果停止递归(注释68-71),则代码可以工作,但显然这意味着排序只能部分完成。如果要运行代码进行测试,则需要“p5.js”。我也为错误的代码感到抱歉 一如既往,我们感谢您的帮助,感谢您花时间帮助我(以及未来的谷歌用户) 附加点:有人知道这是什么类型的排序函数吗?我假设你有python的背景 在javascript中,当声明变量名称时,变量在变量名称之前“需要”三个关键字中的一个(let、const、var)。例如Javascript 如何停止递归函数修改它';谁拥有自己的变量?,javascript,sorting,variables,recursion,Javascript,Sorting,Variables,Recursion,我正在尝试创建一个使用递归的javascript排序算法。它不断修改自己的变量。我该怎么阻止这一切 例如(psuedocode): 问题是运行sort()会将原始随机值修改为不同的随机值 我尝试过使用“this.varname”,但似乎没有什么不同 我的完整代码是,递归函数在第52行。被覆盖的变量是“大”和“小” 如果停止递归(注释68-71),则代码可以工作,但显然这意味着排序只能部分完成。如果要运行代码进行测试,则需要“p5.js”。我也为错误的代码感到抱歉 一如既往,我们感谢您的帮助,感谢
设a=10与python中的a=10
相同。然而,正如您所看到的,您的代码确实在运行,所以声明一个没有这些关键字的变量必须有效,对吗?是的,但不是你想象的那样a=10
与window.a=10
相同。因此,实际上是将值10绑定到window对象上的键“a”,而不是声明一个函数范围的变量
在下面的示例中,a
insidefoo
的作用域是函数,而a
insidebar
的作用域是窗口对象
函数foo(){
设a=10
}
功能条(){
a=10
}
console.log(window.a)
foo();
console.log(window.a)
bar();
console.log(window.a)
在哪里声明了a
?我猜超出了函数的范围。改为第一行var a=random
,它的作用域就是函数本身。作用域,作用域就是你的问题。在fun
中定义a
,您的问题就会消失。我不知道这是否是代码的意图,但它不会在该函数之外修改a
。。。我最初在声明变量之前做了很多事情(java在这方面做得很好),但最终得出的结论是javascript不需要它们。无论如何,谢谢你!
function fun():
a = random
fun()
return a