1

我有下面的想法,但我不太清楚,如果有任何可能性,這將工作。ES6解構執行功能參數

IS-CASE:

handleChange({ target: { value } }) { 
    const intValue = parseInt(value, 10); 
    // doSomething(intValue); 
} 

SHOULD-CASE:

handleChange({ target: { value: parseInt(value, 10) } }) { 
    // doSomething(value); 
} 

我想:我要值參數直接在函數的頭部解析爲整數。所以我可以作爲一個Integer來訪問它。

我知道,我的should-state是無效的js-syntax,但我想知道,如果有任何可能性,我可以實現這一點。

我已經知道了,這是工作:

let {length : len} = 'abc'; // len = 3 

所以我要尋找一個類似的行爲:

let {parseInt : int} = '123'; // int = 3 

最好的問候,期待着建議,

邁克爾

+1

它應該是一個函數定義或函數調用? – Cobaltway

+0

我試圖澄清自己並編輯了我以前的問題。 – dazlious

+0

我認爲你的代碼中有一個缺失的箭頭或函數關鍵字。 – Cobaltway

回答

1

像這樣的東西會工作,但有一個竅門

爲了簡單起見,我用的只是{ value }代替{ target: { value } }

function handleChange({ 
    value = 10, // declare this first so you can use the variable later 
    intValue = parseInt(value, 10) // intValue shouldn't be passed as argument 
} = {}) { 
    console.log(intValue); 
} 

handleChange({ value: "100" }); 

但它會給比當intValue在功能PARAM屬性是什麼意圖其他結果[0]。

handleChange({ value: "100", intValue: 10 }); 

將記錄100當你真正希望它登錄10。所以我不會推薦這樣做,因爲這是漏洞。

+0

這很好,但正如你所提到的,有一點困難。如果我想通過jsDoc記錄我的代碼,那麼我還必須記錄第二個參數。我不喜歡那樣,因爲有第二個參數 – dazlious