(27)进阶:函数

函数的五种声明方式

     

1.具名函数

     function f(x,y){
        return x+y
    }
    f.name // 'f'
2.匿名函数

    var f
    f = function(x,y){   //匿名函数必须赋值一个变量 
        return x+y
     }
    f.name // 'f'

3.具名函数赋值

     var f
      f = function f2(x,y){ return x+y }   //f是函数,f2是未定义的
      f.name // 'f2'
     console.log(f2) // undefined

4.window.Function    //Function是函数对象 

    var f = new Function('x','y','return x+y')
    f.name // "anonymous"

    n = 1
    new Function('x','y','return x+'+n+'y')
    f(1,2)   //4

5.箭头函数

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

    f = (x,y) => {
         var n = x * 3
         var m = y * 2
             return n+m
    }

函数的name属性

函数的本质

     f(1,2) = f.call(undefined,1,2)

this 和 arguments

function f(){
    'use strict'  //严格模式下 this为call的第一个参数 如果是在普通模式下 this会被当成window
    console.log(this)
    console.log(arguments)
    return undefined
}
f.call(1,2,3) // this 为 1,arguments 为 [2,3]

call stack 调用栈

作用域

搜索 方应杭 闭包

猜你喜欢

转载自blog.csdn.net/wolverine54/article/details/84224798