2016-07-18 13 views
2

showToast({ text: "some text"})を呼び出すために使用する正しい構文は何ですか。params.autoHideparams.actionのデフォルト値を取得するには、次のような関数がありますか?いくつかのパラメータオブジェクトのES6デフォルト値

function showToast (params = {text: 'Something happened!', autoHide: false, action: 'CLOSE'}) { 
    //noinspection JSUnresolvedFunction 
    const toast = $mdToast.simple() 
     .textContent(params.text) 
     .position('top right') 
    ; 

    if (!params.autoHide) { 
     toast.hideDelay(false); 
    } 
    if (params.action) { 
     //noinspection JSValidateTypes 
     toast.action(params.action); // label for close btn 
    } 

    $mdToast.show(toast); 
} 

答えて

2

引数リストにオブジェクトの構造化を使用することもできます。

function foo({text = "Hi", autoHide = false, action = "CLOSE"} = {}) { 
 
    console.log(text + " " + autoHide + " " + action) 
 
} 
 

 
foo({text: "asd"});

参照babel/repl:変更する唯一のものは、あなたがparamsオブジェクトを介してパラメータにアクセスしてはならないです。

destructuringオブジェクトのデフォルト値は= {}です。これにより、単一のパラメータなしで関数を呼び出すことが可能になります:foo();

+0

私を私のところに置き、私に事を教えるためのアップヴォート。ありがとう! – Yoda

1

あなたはこれを達成するためのパラメータオブジェクトの構造化代入を使用することができます。

function showToast({text = 'Something happened!', autoHide = false, action = 'CLOSE'} = {}) { 
    //noinspection JSUnresolvedFunction 
    const toast = $mdToast.simple().textContent(text).position('top right'); 

    if (!autoHide) { 
     toast.hideDelay(false); 
    } 
    if (action) { 
     //noinspection JSValidateTypes 
     toast.action(action); // label for close btn 
    } 

    $mdToast.show(toast); 
} 

showToast({ text: "some text" }) // defaults autoHide to false, action to 'CLOSE' 

"Setting a function parameter's default value"を参照してください。

関連する問題