函数

作者: 山猪打不过家猪 | 来源:发表于2020-01-13 16:28 被阅读0次

    函数声明

    1.函数体

    function test(){
        pass;
    }
    test();
    

    2.命名函数表达式

    var  test= function abc(){
        pass
    }
    test();
    

    该种方式忽略的了函数的 名字 abc,所以执行的时候使用test();

    3.匿名函数表达式

    var test = function(){
        pass
    }
    test();
    

    传参

    function test(a){
        console.log(arguments);
    }
    
    test(11,2,3);
    

    chrome中显示为:


    image.png

    答应arguments里面得值

    
    function test(a){
        
        for (var i =0; i<arguments.length;i++){  //形参长度
            console.log(i);
        }
        console.log(test.length);  //形参长度
    }
    
    test(11,2,3)
    
    

    其中,arguments.length代表实参长度,如果要知道新参长度 test.length就是形参长度

    不固定形参的好处

    任意数字求和

    function sum(){
        var result = 0; 
        for (var i =0; i<arguments.length;i++){  
            result += arguments[i];
    
        }
        console.log(result);  
    }
    
    sum(11,2,3);
    >>>
    16
    

    注:实参决定了arguments的映射关系

    函数的终止和结束

    return

    function myNumber(a){
           return +a
    }
    var myNumber= myNumber('123');
    console.log(myNumber);
    console.log(typeof(myNumber));
    
    >>>
    123
    number
    

    作用域

    1.任何变量未经声明直接赋值,归window所有

    function test(){
        var a = b = 123;
    }
    
    test()
    
    console.log(window.b);
    console.log(window.a);
    
    >>>
    123
    undefined
    

    2.一切声明的全局变量,全是window的属性

    function test(){
        var a =123;
    }
    test();
    console.log(window.a);
    >>>
    undefined
    

    a不是全局变量,是test函数的局部变量

    3.window就是全局

    var a = 123;
    console.log(a);=== console.log(window.a)
    

    4.预编译发生在函数执行的前一刻

    function fn(a){
        console.log(a);
        var a = 123;
        console.log(a);
        function a(){}
        console.log(a);
        var b = function(){}
        console.log(b);
        function d(){}
    }
    fn(1);
    
    >>>
    ƒ a(){}
    123
    123
    ƒ (){}
    
    

    过程:
    ①创建AO(Activation Object )对象(执行期上下文)

    AO{
    
    }
    

    ②找形参和变量声明,将变量和形参名作为AO属性名,值为undefined

    AO{
          a: undefined,
          b: undefined,
    }
    

    ③将实参值和形参统一

    AO{
          a: 1,
          b: undefined,
    }
    

    ④找函数体里面的函数声明,值赋予函数体

    AO{
          a:  function a(){},
          b: undefined,
          d:  function d(){}
    }
    

    相关文章

      网友评论

          本文标题:函数

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