2017-06-21 104 views
5

我正在審閱react-jsonschema-form的代碼。我遇到了以下幾行,我無法理解。無法理解JavaScript語法

var formData = (0, _utils.getDefaultFormState)(schema, props.formData, definitions); 

第一個括號內的內容如何傳遞參數(schema,props.formData等)的函數?

+0

第一個大括號'()'返回一個接受3個參數的函數。 – Jai

+2

表達式'(n0,n1,...,n)'計算爲'n',所以在你的情況下,函數'_utils.getDefaultFormState'。至於爲什麼這是使用,我不知道 – Phil

+1

菲爾你的評論將是值得的,作爲它自己的權利的答案。 –

回答

1

我想這個問題的答案是,在第一個表達式(0,_utils.getDefaultFormState)comma,運算符評估到最後一個參數並返回它。

因此,逗號運算符對其操作數從左到右進行操作,並返回最後一個表達式中最右側的被計算操作數。

但是,在使用函數及其返回值方面有所不同。

// sample from MDN. 
function myFunc() { 
    var x = 0; 

    return (x += 1, x); // the same as return ++x; 
} 

正如我在評論中提及:

第一托架是自執行功能,並返回它的值作爲_utils對象,它接受3個或多個參數的函數。

1

在這種情況下,第一個括號對是一個語句序列,其值是最後一個表達式的值。然後:

(0,_utils.getDefaultFormState) 

返回函數objet _utils.getDefaultFormState,然後使用以下參數調用該函數。