1. 程式人生 > >(27)進階:函式

(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 呼叫棧

作用域

搜尋 方應杭 閉包