私はjQuery 1.7.1を使用しています
JavaScriptの三項演算子を使用して、単純なif / elseステートメントを置き換えようとしています。私はいくつかの場所で成功しています。確かにうまくいかないと思ったとき、他の作業に成功したときは驚きましたが、とにかく試しました。
元のステートメントは次のとおりです。
function updateItem() {
$this = $(this);
var IsChecked = $this.hasClass("IsChecked");
if (IsChecked == true){
removeItem($this);
} else {
addItem($this);
}
}
三項演算子を使用した同じ関数を次に示します。
function updateItem() {
$this = $(this);
var IsChecked = $this.hasClass("IsChecked");
(IsChecked == true) ? removeItem($this) : addItem($this);
}
使用していた例はすべて、次のように変数を設定するだけだったので驚きました。
x = (1 < 2) ? true : false;
私の質問は、これが「通常の」使用であるかどうかであり、ほとんどのバージョンのJavaScriptで機能しますか?どこで失敗しますか?他にそれほど明白でない使用法はありますか?
更新-「現実世界」のアドバイスをありがとう!!!
私はこれを私の関数として使用しています:
function updateItem() {
$this = $(this);
$this.hasClass("IsChecked") ? removeItem($this) : addItem($this);
}
(IsChecked ? removeItem : addItem)($this)
。ただし、質問に答えるには、はい、これは正常であり、必要な状況で保守性や可読性を損なうことがなければ、3項演算子の使用に問題はありません。jsfiddle.net/vsB3f
if($this.hasClass("IsChecked")) removeItem($this); else addItem($this)
適切な方法です。三項演算子は、このようなケースではなくfoo(isChecked ? 'bar' : meow());
、(then / elseブロックで何をしても「戻り値」を気にする場合など)
$(this).hasClass("IsChecked") ? removeItem($this) : addItem($this);
コードをそのまま1行で理解できるので、私の経験則に適合します(以下の投稿を参照)。私のために働く。