js函数

作者: 周周很可爱 | 来源:发表于2019-10-08 17:16 被阅读0次

    1.函数声明

    function fn(){
    
     }
    

    函数声明有函数声明提升的过程 ,只要你写了,就可以访问到里面的变量

    比如:

     console.log(sum(10,20));    // 返回值是30
     function sum(num1,num2){
      return num1 + num2;
     }   
    

    2,函数表达式

    var fn = function (){};
    var fn = new Function("num1","num2","return num1+num2");
    

    函数表达式必须等到解析器执行到它所在的代码行,才会真正的被解析。

    例如:

    console.log(sum(10,20));   // 会报错,显示sum is not a function
    at
      var sum = function(num1,num2){
      return num1 + num2;
      }
    

    这就是解析器还没有解析到函数,函数没有被解析,所以会报错

    可以同时使用函数声明和函数表达式,

    例如:

    var sum = function sum(){};
    

    **3.函数是对象,函数名是指针

    例如:
     function sum(num1,num2){
      return num1 + num2;
      }
     console.log(sum(10,10));  //   返回20
      var anotherSum = sum;
      console.log(anotherSum(10,10));  //返回 20
     sum = null;
     console.log(sum(10,10));
      console.log(anotherSum(10,10));
    

    4.函数没有重载

    function addSomeNumber(num){
     return num + 100;
    }
     function addSomeNumber(num){
     return num + 200;
    }
    console.log(addSomeNumber(100));  // 返回300
    

    如何模拟函数重载
    话不多说,上代码

     function fn(){
     if(arguments.length == 1){
      return arguments[0] +10;
       }else if(arguments.length == 2){
      return arguments[0] +arguments[1];
     }
    }
     fn(100);
    fn(100,100);
    
    var fn = (function factorial(num){
     if(num <= 1){
     return 1;
     }else{
      return num*factorial(num-1);
     }
    });
    var val = fn(5);
    console.log(val);   // 返回 200  
    

    函数内部属性 arguments.callee; callee是指针,指向拥有这个arguments对象的函数。

    caller保存着调用当前的函数的引用。

    function outer(){
    inner();
    }
    function inner(){
       alert(inner.caller);
    }
    outer();
    
    屏幕快照 2019-10-08 下午5.05.07.png

    学艺不精 望多指教 谢谢

    相关文章

      网友评论

          本文标题:js函数

          本文链接:https://www.haomeiwen.com/subject/nhtipctx.html