if 条件文で変数を割り当てるのは良い方法でしょうか? [closed] 質問する

if 条件文で変数を割り当てるのは良い方法でしょうか? [closed] 質問する

私は 1 年前に Java などの古典的な OO 言語から JavaScript に移行しました。次のコードは Java では絶対に推奨されません (正しくもありません)。

if(dayNumber = getClickedDayNumber(dayInfo))
{
    alert("day number found : " + dayNumber);
}
function getClickedDayNumber(dayInfo)
{
    dayNumber = dayInfo.indexOf("fc-day");
    if(dayNumber != -1) //substring found
    {
        //normally any calendar month consists of "40" days, so this will definitely pick up its day number.
        return parseInt(dayInfo.substring(dayNumber+6, dayNumber+8));
    }
    return false;
}

基本的に、if 条件文で変数に値を割り当て、割り当てられた値をブール値であるかのようにすぐにチェックできることが分かりました。

より安全を期すために、私は通常、これを 2 行のコードに分割し、最初に割り当ててから変数をチェックしますが、これを発見したので、経験豊富な JavaScript 開発者の目から見て、これが良い方法なのかどうか疑問に思っています。

ベストアンサー1

お勧めしません。問題は、値を比較しようとして、または の=代わりにsingle を使用するというよくあるエラーのように見えることです。たとえば、次のようになります。=====

if (value = someFunction()) {
    ...
}

彼らがそうするつもりだったのか、あるいはこれを書こうとしていたのかは分かりません。

if (value == someFunction()) {
    ...
}

本当にその場で割り当てを実行したい場合は、明示的な比較も実行することをお勧めします。

if ((value = someFunction()) === <whatever truthy value you are expecting>) {
    ...
}

おすすめ記事