我创建了一个简单的javascript函数来确定第n个斐波纳契数。它有效,但我试图找出为什么它传递两个参数时仍然有效。
function fib(n){
if (n <= 1){
return n;
}
else if(n > 1){
return fib(n-1) + fib(n-2);
}
}
因此,当我运行fib(10)
时,我得到55的正确输出。但是如果我要做类似的事情
fib(1,2)
我希望得到Undefined,但方法是输出1.
我的问题是如何保持javascript方法只接受一定数量的参数?在我的情况下,我只想让fib接受一个参数。
答案 0 :(得分:1)
在javascript中,您不能仅根据参数的数量来改变功能。可以使用零个或多个参数调用所有函数。由函数决定如何以及是否将访问它们(通过mamed参数或arguments对象)。
基本上你可以检查并查看是否有多个参数可用并抛出异常,但为什么要这样做呢?它不太可能帮助你更快地找到错误,除此之外没有任何好处 - 该功能将以相同的方式运行。
答案 1 :(得分:0)
JavaScript非常宽容。你可以像腺病一样做你想做的事情:
if (arguments.length > 1) throw "Too many arguments exception";
我真的没有理由为什么你应该这样做。但是你可以担心以下情况。
fib(true) // true
fib(false) // false
fib("wat") // undefined