在以下问题中,我最初没有else括号,并认为代码可以正常运行。在我看来,如果我在“ if语句”之外有代码,它将自动默认为“ else”。但是,只有当我DID带有else括号时,代码才能正常工作并正常运行。
有人可以解释为什么需要其他括号吗?
function backwardString(string) {
if( string.length === 1 ) {
// base case
console.log (string)
}
else {
// recursion itself
console.log(string[string.length-1])
//call the function again()
// console.log( string.substring( 0,string.length - 1 ) )
backwardString( string.substring( 0, string.length - 1 ) )
}
}
backwardString('happy');
// y
// p
// p
// a
// h
答案 0 :(得分:0)
这是一个函数的示例,其中我们return
因此强制执行控制流:
function fac(n) {
if (n === 0) {
return 1;
}
return n * fac(n - 1);
}
因此,代码将从顶部开始,然后执行语句到语句。使用递归功能时,没有区别。当调用递归函数时,所有绑定和局部变量对该调用都是唯一的,被调用方以与调用完全唯一的非递归函数相同的方式等待。起作用的递归函数会遇到基本情况,然后返回到calee。如果您在if之外有额外的代码行,则基本情况和默认情况下的if一旦完成都会对其进行评估。
在此示例中,无论test
是什么,始终会调用code1和code4,并且根据表达式code2
是否正确,调用code3
或test
。 / p>
code1()
if (test) {
code2()
} else {
code3()
}
code44();