デフォルトパラメータのピットについて

1016 ワード

シナリオ:mongodbクエリーの結果を時間でフィルタします.2つのパラメータstart_time and end_timeです.この2つのパラメータを送信しない場合は、デフォルト値を使用します.
start_time = new Date(0); //     1970 
end_time = new Date();    //        

JavascriptのES 6の新しいプロパティを使用して、メソッドパラメータにデフォルト値を直接割り当てます.
search(start_time=new Date(0), end_time=new date()) {
   ... //        
}

これは問題ありません.問題は、このメソッドを使用するときに渡されるパラメータの問題です.
let start_time =               ;
let end_time =               ;
search(start_time, end_time);

問題が発生しました.
  • クライアントから送信された値が空の場合start_timeまたはend_timeは""すなわち空文字
  • である.
  • 例えばstart_time私たちは、彼女の最後の値はnew Date(0)
  • であるべきだと考えています.
  • しかし、彼女の値は""、すなわち空の文字列
  • です.
    結論として、パラメータがundefinedの場合にのみデフォルトパラメータが使用される
    したがって、次のように使用する必要があります.
    let start_time =                || undefined;
    let end_time =                || undefined;
    search(start_time, end_time);