这是我的示例函数。 let array = ["x", "y", "z", 4, 5]; function print(arr, pos, len) { if (pos < len) { console.log(arr[pos]); print(arr, pos + 1, len); } return; } print(array, 0, array.length);数组一一打印。但是,这是怎么发生的却没有循环?有人澄清这里的功能过程吗? 最佳答案 这是怎么回事?它使用recursion,这意味着从函数内部调用函数本身。使用循环不是迭代集合的唯一方法。如果您看一下代码,print函数将在函数外部被调用一次,但也会在print函数本身内部被调用。因此,当我们第一次使用数组[1, 2, 3]运行函数时,将使用以下参数运行函数:print([1, 2, 3], 0, 3)然后,当我们输入函数时,我们查看if语句,发现pos(0)实际上小于len(3)。因此,我们接着进行console.log(arr[0]),它将打印阵列中的第一项。然后,我们进入下一行,并再次调用print,但这一次是在函数内部。现在,我们使用以下参数进行调用:print([1, 2, 3], 1, 3)同样,这将遍历if语句,确认它是正确的,然后运行console.log(arr[1])。再一次,我们将使用以下参数调用print:print([1, 2, 3], 2, 3)然后,这将console.log(arr[2])(数组中的最后一项),并使用以下参数再次调用print:print([1, 2, 3], 3, 3)但是,这次,我们的if语句不满足/不正确,因为pos(3)不小于len(3)。换句话说,满足了我们的基本情况(停止递归的条件)。因此,我们要做的而不是打印的是return。进行return将使我们回到上一次调用print语句的位置,这意味着我们将从上一次对if的调用返回到print语句内部,然后在语句已完成。展开过程一直持续到我们return原始调用if(在return函数声明之外)之前。由于没有更多代码可运行,因此我们的程序在此之后终止。关于javascript - 此函数如何与没有循环的数组一起使用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53679908/