函數(shù)是JavaScript世界里的第一公民,換句話來說,就是我們?nèi)绻梢跃↗avaScript函數(shù)的使用,那么對(duì)JavaScript的運(yùn)用可以更游刃有余了。熟悉JavaScript的人應(yīng)該都知道,同樣的函數(shù),以不同的方式調(diào)用的話,受影響最大的應(yīng)該是  this 。下面我們來說說JavaScript函數(shù)的各種調(diào)用模式。

一、普通函數(shù)的調(diào)用模式

  所謂普通函數(shù)的調(diào)用模式,也是JavaScript函數(shù)的最簡單的一種調(diào)用模式,直接就是函數(shù)名后接一個(gè)  ()  實(shí)現(xiàn)調(diào)用,看下面代碼:

function func(){
    console.log(this === window);  //true
}
func();

  上面代碼,我們用function關(guān)鍵字聲明了一個(gè) func 函數(shù),并且在函數(shù)體內(nèi)打印 this===window,然后我們直接調(diào)用函數(shù)func,我們可以看到控制臺(tái)是直接打印出 true ,也就是說,函數(shù)的這種普通調(diào)用模式,函數(shù)體內(nèi)的  this  是指向全局環(huán)境 window 的。不清楚這點(diǎn)的同學(xué),可以能會(huì)遇到這樣的一個(gè)bug:

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動(dòng)開發(fā)培訓(xùn)

var color = 'gg';var obj = {
    color : 'red',
    show : function(){        function func1(){
            console.log(this.color);  //gg
        }
        func1();
    }