重载

函数不定参
js传不定参,函数内部有一个arguments对象,接收传递过来的参数
arguments对象是一个类数组对象

  1. function go(a){
  2. console.log(arguments);
  3. console.log(a);
  4. console.log(arguments[1]);
  5. }
  6. go(10,12)

重载:**就是根据参数的不同,动态决定调用哪个方法
js中没有重载的概念,因为重复声明,下面的会覆盖上面的**

  1. //js中没有重载的概念,因为重复声明,下面的会覆盖上面的
  2. function go(a){
  3. console.log(a);
  4. }
  5. function go(a,b){
  6. console.log(a+b);
  7. }

使用arguments对象模拟重载

  1. function go(){
  2. if(arguments.length==1){
  3. console.log(arguments[0]);
  4. }else if(arguments.length==2){
  5. console.log(arguments[0]+arguments[1]);
  6. }
  7. }
  8. go(1)
  9. go(10,20)

递归

函数调用函数自身,就叫递归

  1. <script>
  2. function show(){
  3. setTimeout(function(){
  4. console.log(1)
  5. show();
  6. },1000)
  7. }
  8. show()
  9. </script>

回调函数

回调函数:就是将函数作为参数,传递给另一个函数
场景:一般在异步调用中使用
作用:
1.将函数内部的值返回到外部
2.取代了return语句

  1. <script>
  2. var show = function(res){
  3. console.log(res);
  4. }
  5. function go(callback){
  6. var a = 10;
  7. callback(a);
  8. }
  9. go(show);
  10. </script>

默认赋值

当函数内中参数大概率不会发生改变时,可以使用默认赋值

  1. <script>
  2. function go(method="get"){
  3. console.log(method)
  4. }
  5. go();//get
  6. function ajax({
  7. url,
  8. method = "get"
  9. }){
  10. console.log(method);
  11. console.log(url)
  12. }
  13. ajax({url:"xxx"})//get <br> xxx
  14. </script>