什么';我的JavaScript搜索递归循环有什么问题?
我似乎不明白为什么我的递归搜索不会以递归方式进行 你知道怎么了吗?我的草堆[I]放错地方了吗?因为我没有看到它。我试着在这个网站上浏览一些例子,但我想不出这么简单的东西什么';我的JavaScript搜索递归循环有什么问题?,javascript,recursion,Javascript,Recursion,我似乎不明白为什么我的递归搜索不会以递归方式进行 你知道怎么了吗?我的草堆[I]放错地方了吗?因为我没有看到它。我试着在这个网站上浏览一些例子,但我想不出这么简单的东西 search = function(needle, haystack) { len = haystack.length; for (var i = 0; i < len; i++) { if (typeof haystack[i] == 'object') {
search = function(needle, haystack) {
len = haystack.length;
for (var i = 0; i < len; i++)
{
if (typeof haystack[i] == 'object') {
search(needle, haystack[i])
} else {
if (needle == haystack[i]) {
console.log('found');
return;
}
console.log('value: ' + haystack[i])
}
}
}
var test = [[1], [2], [3,4], [5,6]]
search(4, test)
search=功能(针、草垛){
len=干草堆长度;
对于(变量i=0;i
或者看到小提琴@(打开控制台)你在
len
前面缺少var
,它应该是var len=haystack.length代码>否则它将被视为全局变量
当haystack=[[1]、[2]、[3,4]、[5,6]]时,len=4,但再次调用search(4[1])
,然后分配len=1
,然后当循环返回len=1
的值,而不是原始的4,因为它是一个全局变量。现在i=2,len=1,因此循环存在在len
前面缺少var
,它应该是var len=haystack.length代码>否则它将被视为全局变量
当haystack=[[1]、[2]、[3,4]、[5,6]]时,len=4,但再次调用search(4[1])
,然后分配len=1
,然后当循环返回len=1
的值,而不是原始的4,因为它是一个全局变量。现在i=2,len=1,因此循环存在@doorknoble是的,它将。。。你测试过它吗。这很有趣,为什么?(+1)为什么将全局变量更改为局部变量很重要?@doorknold在第一次递归调用后,len
将设置为1
([1]。length
)。返回原始调用,i
将为false
,因为i++
也将i
设置为1
,结束该循环并阻止进一步搜索。作用域len
允许它在第一次调用时保持设置为4
。非常感谢,这很有意义。我甚至想不出这是个问题,太好了,非常感谢@门把手是的,它会。。。你测试过它吗。这很有趣,为什么?(+1)为什么将全局变量更改为局部变量很重要?@doorknold在第一次递归调用后,len
将设置为1
([1]。length
)。返回原始调用,i
将为false
,因为i++
也将i
设置为1
,结束该循环并阻止进一步搜索。作用域len
允许它在第一次调用时保持设置为4
。非常感谢,这很有意义。我甚至想不出这是个问题,太好了,非常感谢!