我尝试遵循简单的 JavaScript 嵌套代码,但结果令人困惑。
谁能详细解释一下吗?非常感谢。
我在等...
<script>
// args = [];
function foo (param) {
args= [];
if (param <= 1) {
args.push(foo(2));
} else {
return param;
}
}
foo(1)
</script>
最后的args是[],我猜外面的args (是 [2])被嵌套的内部 args 覆盖(其中是[])。谁能详细解释一下结果?执行顺序如何?谢谢。
最佳答案
您的代码调用 foo 函数两次 1. foo(1) 是第一次调用,当 foo run 语句时
if (param <= 1) {
args.push(foo(2)); // run here for the first call of foo
} else {
return param;
}
这类似于
if (param <= 1) {
var foo2= foo(2); // -> trigger the second call of foo
args.push(foo2); // first element is pushed in args
} else {
return param;
}
在第二次调用 foo(2) param=2 时,上面代码中的 foo2=2 , 最后,你得到了一个只有一个项目和 args[0]=2
的数组编辑:
args 不会被覆盖,您已将 args 声明为 foo 函数的局部变量,然后当调用 foo(1) 时,它会创建一个 args 变量。当调用 foo(2) 时,会创建另一个参数。
关于javascript - 令人困惑的 JavaScript 嵌套执行结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36266695/