搜尋

首頁  >  問答  >  主體

javascript 函數傳遞 undefined 作為參數的作用

var leadingThirtysevenList = list.bind(undefined, 37);

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

伊谢尔伦伊谢尔伦2753 天前682

全部回覆(4)我來回復

  • 仅有的幸福

    仅有的幸福2017-05-19 10:46:01

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

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

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

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

    回覆
    0
  • 高洛峰

    高洛峰2017-05-19 10:46:01

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

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

    回覆
    0
  • 怪我咯

    怪我咯2017-05-19 10:46:01

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

    回覆
    0
  • 習慣沉默

    習慣沉默2017-05-19 10:46:01

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

    回覆
    0
  • 取消回覆