javascript 函數傳遞 undefined 作為參數的作用
伊谢尔伦
伊谢尔伦 2017-05-19 10:44:01
0
4
687
var leadingThirtysevenList = list.bind(undefined, 37);

這是在手冊中看到的一段關於 bind() 函數傳入第二個參數時實現的功能的程式碼段,其中他將 undefined 作為參數傳入。在某些框架中也看到參數傳遞 undefined 的做法,但是在網路上搜尋一直沒能找到一個比較完整清晰的回答,想請各位老師給個詳細的解答。

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回覆(4)
仅有的幸福

你提供的這段程式碼, 為什麼傳入undefined和我下面的解釋可能是無關的。

我主要說說其他一些框架;例如jquery就會傳入undefined作為參數,並且會賦給一個空值。
那是因為js的一個bug問題, 那就是undefined能被重寫! ! , 是的,你沒聽錯。

至於為什麼undefined被重寫會很危險呢,看下面的程式碼:

(function (undefined) {
    let a;
    
    // 如果a没有值则为a赋值.  但因为undefined被重写了,所以这句根本执行不到。
    if (a === undefined) {
        a = 'b';
    }
})(true);
小葫芦

那你覺得如果你希望之傳遞第二個參數,第一個參數用預設值或是無所謂,該怎麼寫?

這段程式碼只是為了實現函數柯里化呼叫

刘奇

ECMAScript5.1 15.3.4.4中有解釋, 當傳入的第一個參數是null, undefined時, 函數的上下文將指向window (node中是global)

習慣沉默

第一個是佔位用的,但是用null效果會比undefined好吧。一般個人習慣用null來佔位。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板