27函数

作者: Lichee_3be1 | 来源:发表于2020-03-02 17:26 被阅读0次

    函数的 5 种声明

    具名函数

     function f(x,y){
         return x+y
     }
     f.name // 'f'
    

    匿名函数

     var f
     f = function(x,y){
         return x+y
     }
     f.name // 'f'
    

    具名函数赋值

     var f
     f = function f2(x,y){ return x+y }
     f.name // 'f2'
     console.log(f2) // undefined
    
    面试会问
    window.Function
     var f = new Function('x','y','return x+y')
     f.name // "anonymous"
    

    箭头函数

     var f = (x,y) => {
         return x+y
     }
     var sum = (x,y) => x+y
     var n2 = n => n*n
    

    面试会问:函数的name属性


    image.png

    如何调用函数 f.call

    f.call(asThis, input1,input2)
    其中 asThis 会被当做 this,[input1,input2] 会被当做 arguments
    
    image.png

    this 和 arguments

    function f(){
        'use strict'
        console.log(this)
        console.log(arguments)
        return undefined
    }
    f.call(1,2,3) // this 为 1,arguments 为 [2,3]
    不使用 'use strict',如果没传参,默认this是window,使用 'use strict',如果没传参,默认this是undefined
    第一个参数是this,是为了和Java看起来像
    

    作用域---类似树


    每次写题目记得把变量提升(function也是哦)


    先打印出undefined在1

    易错点:f4用的是全局变量的那个a


    image.png

    这里第七行加了个a=2,然后再调用f4的,所以这时候a已经被赋值2了


    无论点击哪一个,都是打印length的值,因为开始就初始化完毕了,值会变化

    闭包

    image.png

    相关文章

      网友评论

          本文标题:27函数

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