-1

次のコードを DRY したいと思います。(最初の if ブロックを省略)

else if (ubar_c_value === 5 ) {
    ubar.removeClass("min");
    ubar.css("bottom","0");
    $.cookie('ubar_cookie',"1");
}
else {
    ubar.removeClass("min");
    ubar.css("bottom","0");
    $.cookie('ubar_cookie',"1");
}

私は試した

else if (ubar_c_value === 5 || undefined) {
    ubar.removeClass("min");
    ubar.css("bottom","0");
    $.cookie('ubar_cookie',"1");
}

else if (ubar_c_value === 5 || ubar_c_value === undefined) {
    ubar.removeClass("min");
    ubar.css("bottom","0");
    $.cookie('ubar_cookie',"1");
}

しかし、それらはうまくいきませんでした。

私がやりたいことをする方法はありますか?関数を作成して、それを 2 回含めることもできると思いますが、それでも少し湿っているように感じます。

4

4 に答える 4

2

代わりにこれを使用してください

else if (ubar_c_value === 5 || typeof ubar_c_value === 'undefined') {
    ubar.removeClass("min");
    ubar.css("bottom","0");
    $.cookie('ubar_cookie',"1");
}
于 2013-05-24T15:32:15.367 に答える
2

あなたの質問と同じくらい簡単な場合は、次のようになります。

else if (ubar_c_value === 5 ) {
    ubar.removeClass("min");
    ubar.css("bottom","0");
    $.cookie('ubar_cookie',"1");
}
else {
    ubar.removeClass("min");
    ubar.css("bottom","0");
    $.cookie('ubar_cookie',"1");
}

これと同等です:

else {
        ubar.removeClass("min");
        ubar.css("bottom","0");
        $.cookie('ubar_cookie',"1");
    }

デフォルトのケースは最後から 2 番目のケースと同じだったので、デフォルトのままでかまいません。

定義された値であるが 5 ではない場合は何もしたくない場合 (元のコードでは実行されません)

それならこれでいい

else if (ubar_c_value === 5 || typeof ubar_c_value === 'undefined') {
    ubar.removeClass("min");
    ubar.css("bottom","0");
    $.cookie('ubar_cookie',"1");
}

undefinedただし、何らかの理由で再定義していない限り、2番目の例はその場合に機能するはずです。

于 2013-05-24T15:34:54.720 に答える
1
if(typeof ubar_c_value === 'undefined' || ubar_c_value === 5) {
    ubar.removeClass("min");
    ubar.css("bottom","0");
    $.cookie('ubar_cookie',"1");
}

typeof 演算子は、評価されていないオペランドの型を示す文字列を返します。

また、typeof/string 比較を使用してからチェックすることをお勧めしundefinedます。

悪い (未定義は予約変数ではなく、割り当てられる可能性があり、IFステートメントが壊れます)

ubar_c_value === undefined

良い

typeof ubar_c_value === 'undefined'
于 2013-05-24T15:33:10.887 に答える
1

使用するtypeof

typeof を使用すると、識別子が以前に宣言されていないことが許可されます。したがって、その点ではより安全です。

else if (ubar_c_value === 5 || typeof c_value === 'undefined') {
    ubar.removeClass("min");
    ubar.css("bottom","0");
    $.cookie('ubar_cookie',"1");
}
于 2013-05-24T15:31:02.363 に答える