js學(xué)習(xí)總結(jié)(一)

1.函數(shù)提升:
對于函數(shù),只有函數(shù)聲明會被提升到頂部,而不包括函數(shù)表達式。

/* 函數(shù)聲明 */

foo(); // "bar"

function foo() {
  console.log("bar");
}


/* 函數(shù)表達式   表達式定義的函數(shù),稱為匿名函數(shù)。匿名函數(shù)沒有函數(shù)提升。*/

baz(); // TypeError: baz is not a function
//此時的"baz"相當(dāng)于一個聲明的變量,類型為undefined。
由于baz只是相當(dāng)于一個變量,因此瀏覽器認為"baz()"不是一個函數(shù)。
var baz = function() {
  console.log("bar2");
};
注意:表達式定義的函數(shù),稱為匿名函數(shù),匿名函數(shù)沒有函數(shù)提升

2.apply()方法調(diào)用一個函數(shù), 其具有一個指定的this值,以及作為一個數(shù)組(或
類似數(shù)組的對象)提供的參數(shù):

fun.apply(thisArg, [argsArray])

參數(shù):

thisArg:

fun 函數(shù)運行時指定的 this 值。需要注意的是,指定的 this 值并不一定是該函數(shù)執(zhí)行時真正的 this 值,如果這個函數(shù)處于[非嚴格模式下]則指定為 nullundefined會自動指向全局對象(瀏覽器中就是window對象),同時值為原始值(數(shù)字,字符串,布爾值)的 this 會指向該原始值的自動包裝對象。

argsArray:

一個數(shù)組或者類數(shù)組對象,其中的數(shù)組元素將作為單獨的參數(shù)傳給 fun函數(shù)。如果該參數(shù)的值為null
或 [undefined]則表示不需要傳入任何參數(shù)。

例子:

//高階函數(shù)
        //這個高階函數(shù)返回一個新的函數(shù),這個函數(shù)將他的實參傳入f()
        //并返回f的返回值的邏輯非
        function not(f){
            return function(){
                var result = f.apply(this,arguments);//調(diào)用f()
                console.log(this); //window
                return !result;//對結(jié)果進行求反
            }
        }

        var even = function(x){//判斷x是否為偶數(shù)的函數(shù)
            return x % 2 === 0;
        }

        var odd = not(even);//一個新函數(shù),所做的事情和even()相反
        [1,,1,3,5,7,9].every(odd);
var result = f.apply(this,arguments);//調(diào)用f()

這里的this如果換做null或者undefined,this也是指Window

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容