1. ホーム
  2. javascript

[解決済み] if条件文の中で変数を代入するのは良い方法ですか、悪い方法ですか?[クローズド]

2022-06-07 20:04:20

質問

私は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条件文の中で変数に値を代入し、代入された値をbooleanであるかのようにすぐにチェックできることがわかっただけです。

より安全な賭けとして、私は通常それを2行のコードに分離し、最初に代入し、次に変数をチェックします。

どのように解決するのですか?

お勧めしません。問題は、値を比較しようとする一般的なエラーのように見えますが、単一の = の代わりに == または === . 例えば、こんなとき。

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

は、そういうつもりで書いたのか、こういうつもりで書いたのか、わからない。

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

どうしても代入をその場で行いたいのであれば、明示的な比較も行うことをお勧めします。

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