11
the_styles ? the_styles.appendTo('head'); the_styles=null : the_styles = $('.stylesheet').detach();

明らかに、これは有効ではありません。「;」に注意してください appendTo()との間the_styles=null。1行で書いて、そのような複数の式を保持するにはどうすればよいですか?

4

6 に答える 6

21

コンマ演算子を次のように使用します。

the_styles ? (the_styles.appendTo('head'), the_styles=null) : the_styles =  $('.stylesheet').detach();

コンマ演算子について Mozilla Developer Center が書いている内容は次のとおりです。

単一の式を必要とする場所に複数の式を含める場合は、カンマ演算子を使用できます。この演算子の最も一般的な使用法は、for ループで複数のパラメーターを指定することです。

詳細はこちら: https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Operators/Special_Operators/Comma_Operator

于 2010-07-02T18:32:55.657 に答える
8

三項演算子が必要なのは誰ですか?

​the_styles = !the_styles && $('.stylesheet').detach()​​​​ ||
             the_styles.appendTo('head') && null;​

そうしないnullと、最初の式の値によって常に2番目の式が強制的.detach()に評価されるため、式を切り替える必要がありました。

賢いコードについての唯一のことは、コーヒー ブレークの後にコードに戻ると、自分でさえ意味をなさないということです。したがって、これははるかに優れています:

if(the_styles) {
    the_styles.appendTo('head')
    the_styles = null;
}
else {
    the_styles = the_styles.detach('.stylesheet');
}

私には、上記の単純化されたバージョンでさえ意味がありません。の部分は明らかですが、なぜそれをしているのですか?

于 2010-07-02T18:41:07.763 に答える
2
the_styles ? (function() {the_styles.appendTo('head'); the_styles=null})() : <etc>

(function() { コード ブロックをandでラップするだけ})()です。

ここで難しいのは、なぜこれをやりたいのかということです。より良い解決策があるかもしれません!

于 2010-07-02T18:18:06.127 に答える
1

私はglowcoderに同意しますが、それでも必要な場合:

the_styles ? function(){ the_styles.appendTo('head'); the_styles=null;}() : the_styles = $('.stylesheet').detach();
于 2010-07-02T18:19:07.433 に答える
0
the_styles ? the_styles.appendTo('head') : the_styles = $('.stylesheet').detach();

上書きする場合は、null にする必要はありません。

于 2010-07-02T18:19:25.793 に答える
0
the_styles=the_styles || $('.stylesheet').detach(); the_styles.appendTo('head');
于 2010-07-02T18:19:51.597 に答える