函数默认值

  1. // es6 默认参数
  2. function foo(a="a", b="b"){
  3. console.log(a, b);
  4. }
  5. foo(1);
  6. function foo(a, b){
  7. // 最好写成arguments,这样与实参一一对应
  8. a = aruguments[0] || "a";
  9. b = aruguments[1] || "b";
  10. console.log(a, b);
  11. }
  12. foo(1);
  13. function foo(a, b){
  14. if (typeof(aruguments[0]) !== "undefined"){
  15. a = "a";
  16. }
  17. if (typeof(aruguments[1]) !== "undefined"){
  18. b = "b";
  19. }
  20. console.log(a, b);
  21. }
  22. foo(1);
  23. // 三元运算
  24. function foo(a, b){
  25. a = typeof(aruguments[0]) !== "undefined" ? a : "a";
  26. b = typeof(aruguments[1]) !== "undefined" ? b : "b";
  27. console.log(a, b);
  28. }
  29. foo(1);

递归

n的阶乘

function foo(n){
    if (n==1) return 1;
    return foo(n-1)*n;
}
console.log(foo(5));

递归概念

函数自己调用自己, 慎用递归,递归大部分都可以用for循环实现。

斐波那契数列

f(n) = f(n-1)+f(n-2)

function fib(n){
    if (n <= 0) return 0;
    if (n <= 2) return 1;
    if (n == 3) return 2;
    return fib(n-1)+fib(n-2);
}
// fib(5) = fib(4)+fib(3)
// fib(4) = fib(3)+fib(2);
console.log(fib(6));