2017-04-12 16 views
1
function formatToStandardizedDate(from, to){ 

    const from_date = moment(from); 

    if(to){ 
     let to_date = moment(to); 
    }else{ 
     let to_date = null; 
    } 
} 

console.log(formatToStandardizedDate("2017-04-19 00:00:00",null)) 

上記のコードに問題がありますか? toがnullの場合、少なくともto_dateにはnullが割り当てられますが、定義されていないエラーのto_dateというエラーが発生します。どうして?let変数が定義されていません

+2

varと同じ名前は使用できません。 – Jai

+1

変数を宣言するために "let"と "var"を使用することの違いは何ですか?](http://stackoverflow.com/questions/762011/whats-the-difference-between-using-let-and- var-to-declare-a-variable) – mxr7350

+0

ブロックの外側で使用する場合は、ブロックの外側に 'let'を定義する必要があります。 –

答えて

6

letキーワードと同じ変数名を使用することはできません。これをしようとすると、エラーがスローされます。

let to_date = to ? moment(to) : null; 

または機能に一度以上、それを宣言し、変数

JaredSmithさんのコメントにつき、そのように更新
function formatToStandardizedDate(from, to){ 
    const from_date = moment(from); 
    let to_date = null; // initialize the variable with null 
    if(to) 
     to_date = moment(to); // <---here update the variable with new value. 
} 

を更新:あなたは三項演算子を使用する必要が代わりに


良いようです。

+0

しかし、それは 'const'でもあるかもしれません。 –

+0

しかし、私は定数を新しい値に更新することはできないと思います。 – Jai

+2

else節はまったく必要ないことに注意してください。 'let to_date = null;'を初期化するだけで、2番目のパラメータが真実なら '' to(to)to_date = moment(to) ''に変更してください。私はまだあなたの三者の例を好む。 –

関連する問題