1

ステートメントが実行されるという省略形でこれをどのように書くことができるのか疑問に思っていました

これは機能していませんが、プラグインでこの種の構文を何度も目にします-変数がステートメントと混合されているなど..

この省略形の構文の適切な使用法について誰か説明してもらえますか? 最初のステートメントが true と評価された場合、2 番目のステートメントを「評価」ではなく「実行」したい!

var succes = !data.user||(window.location = "users/profile");

私は最初の例が単純な方法であることを知っていました, これはより良いです, また、カンマを使用して、ステートメントを次々に文字列化します. この構文を学ぶ方法を知りたいです.

},
        hide: function (a,
        b) {
            if (f && !(500 > (new Date).getTime() - f.getTime())) {
                if (!a || "number" == typeof a) a = k();
                b || (b = $(".profile-popup"));
                j(a) && (b.fadeOut("fast"), m(!1, a));
                e && (clearInterval(e), e = null)
            }
        }
    }
}();

編集 最初の例をコードで && を使用するように変更したところ、うまくいきました。

ここ で別の詳細な説明も見つけました。

ありがとう、リチャード

4

2 に答える 2

5

別のものを見逃していると思います=

var succes = !data.user || (window.location == "users/profile");

あなたの例は割り当てます==が、比較です。

于 2012-09-02T08:12:14.607 に答える
4

の一般的なパターンは、次の!obj || obj = "something"単純な省略形です。

if (obj === undefined) {
    obj = "something";
}

これは、未定義の場合に!obj評価されるためです (パターンは、それが として定義されないことも想定しているようです)。falseobjtrue

同様に、パターンf(a) && (g(b), h(c))は次の省略形です。

if (f(a) == true) {
    g(b);
    h(c);
}

参照されているコードの場合:

var succes = !data.user||(window.location = "users/profile");

これが暗黙のうちに言っていることは次のとおりです。

  1. data.user が定義されていない場合は、successtrue に設定します。
  2. それ以外の場合 (data.user 割り当てられている場合)、users/profileにリダイレクトします。

正確な意味は文脈を知らなくても誰でも推測できますが、「ユーザーデータが利用可能な場合はプロフィール画面をリダイレクトし、そうでない場合は...」という意味のようです。

于 2012-09-02T08:20:40.460 に答える