美文网首页
JS函数和作用域

JS函数和作用域

作者: 赵BW | 来源:发表于2017-03-27 13:18 被阅读0次
    函数声明和函数表达式
    • 函数声明:

    fuction fn(){
    console.log("test");
    }

    • 函数表达式:

    var fn = fucntion(){
    console.log("test");;
    }

    • 区别:函数声明可以在任何位置被调用。函数表达式需要在被执行完了后,才能被调用。

    变量提升和函数提升
    • 变量提升:当定义一个变量的时候,变量声明会被提升到前面。然后才被赋值。

    var a = 10;
    相当于
    var a;
    a = 10;

    • 函数提升:当定义一个函数的时候,函数会自动提前。函数表达式不会被提前,只有函数声明会被提前。
    test();//asd
    
      fucntion test(){
          console.log("asd");
      };
    

    argument

    argument是函数参数的列表。是个类数组对象,但他并不是一个真正的数组。所以他只具备length属性。
    可以通过一下语句进行转化:
    var args=Array.prototype.slice.call(arguments)


    函数重载的实现
    • 可以通过argument.length来实现,根据length的不同,来执行不同的代码块。
    • 可以通过if(){}来实现,根据形参的值,来执行不同的代码块。

    立即执行函数表达式
    (function(){})()
    

    IIFE是函数在声明后立即执行,而且同时可以利用函数的作用域,可以避免全局变量的污染。第一个括号的作用是避免function被解析,让function(){}被当成表达式,立即执行。然后第二个括号就是调用函数。


    用递归求n!
    function rec(n){
    
    if(n==1){
        return 1;
    }
    return n*rec(n-1);
    }
    

    相关文章

      网友评论

          本文标题:JS函数和作用域

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