
JavaScriptには、他の言語では必ずしも適用されない興味深い最適化機能があります。次のコードサンプルを検討してください。
var x = 10;
var y = true;
if (x*x > 1000 || y) alert("true!");
ログイン後にコピー
ご想像のとおり、Yが真であるため、「True」は出力です。最初の条件が失敗しても。
JavaScript通訳者は、各条件を順番に分析します。 xを100に変更した場合、x*xは1000を超えてTrueに評価されます。しかし、論理または(||)を使用しているため、通訳者はyを分析する必要はありません。式が真でなければならないため、アラートが表示されます。
したがって、式を最適化して、最小処理を必要とするものが最初に分析されることを確認できます。
if (y || x*x > 1000) alert("true!");
ログイン後にコピー
yが真である場合、通訳者は2番目の条件を評価する必要はありません。特に関数を呼び出したり、集中的な計算を実行したり、DOMを分析したりしている場合、かなりの時間を節約できます。
同じ最適化は、論理と(&&)に適用されます。その場合、falseを評価する最初の式は、条件全体を偽りにします - それ以上の処理は必要ありません。
条件内の割り当て
ジェームズ・エドワーズは最近、次のようなコードについて議論した条件内で記事の割り当てを書きました。
if (summary = document.getElementById("post-summary")) {
alert(summary.innerHTML);
}
ログイン後にコピー
要約
変数は、「ポストサマリー」のIDを使用してHTML要素に設定されます。要素が存在する場合、条件はtrueに評価され、アラートが表示されます。要素が見つからない場合、条件はfalseと評価され、条件付きコードは実行されません。
コメントによると、JavaScriptを読みやデバッグするのが難しくなっているため、このプラクティスを気に入った開発者はほとんどいませんでした。
ただし、別の問題があります。2つ以上の条件で、割り当ては実行されない場合があります。例えば:
if (x || y = functionY()) {
alert(y);
}
ログイン後にコピー
xがtrueに評価された場合、通訳者はyに値を割り当てることはなく、アラートは常にエラーをスローします。
Yが常に評価されるように、条件を逆にすることで修正できます。
if (y = functionY() || x) …
ログイン後にコピー
それでも、これらの条件の順序が不可欠であることは明らかではないため、依然として混乱を引き起こす可能性があります。この記事の上位半分を読んだ開発者は、Xを最初に評価してコードを最適化しようとすることさえあります!
要約すると、条件内で割り当てを使用したい場合は、先に進みますが、必要な唯一の条件であることを絶対に確認してください!
javascript条件のより速い式
に関するよくある質問
javaScript条件式とは?
javaScript条件式は、三元演算子としても知られており、3つのオペランドを服用するオペレーターの一種です。これは、IF-ELSEステートメントを書く略歴です。次のように構成されています:条件? value_if_true:value_if_false。条件は最初に評価されます。それが本当なら、式はvalue_if_trueを返します。 falseの場合、value_if_falseを返します
JavaScriptは、論理および(&&)および(||)演算子をどのように評価しますか? AND演算子の場合、最初のオペランドが偽の場合、JavaScriptは2番目のオペランドを評価せず、最初のオペランドを返します。 ORオペレーターの場合、最初のオペランドが真である場合、JavaScriptは2番目のオペランドを評価せず、最初のオペランドを返します。 =(より大きいまたは等しい)、 if(条件){
//条件が真である場合に実行されるコード //条件が偽の場合はJavaScriptの論理not(!)演算子は、状態のブール結果を逆転させるために使用されます。たとえば、条件が真である場合、!条件は偽りを返し、逆もまた同様です。ただし、ネストされた三元オペレーターはコードを読み取りと理解しにくくすることができるため、控えめに使用する必要があることに注意することが重要です。条件がある場合、複数の他のものを記述するためのより効率的な方法です。構文は次のとおりです。
switch(expression){
case x:
> // code block
break;
case y:
// code block
break;
// code block
}>
javascriptのnullと未定義の違いは何ですか?
javascriptでは、nullは値またはオブジェクトなしを意味する割り当て値です。オブジェクト値の意図的な欠如です。一方、未定義とは、変数が宣言されているが、まだ値が割り当てられていないことを意味します。
javaScript条件を使用して、変数が定義されているかどうかを確認するにはどうすればよいですか?変数が定義されていない場合、TypeOFは「未定義」に戻ります。例は次のとおりです。
if(typeof myvar!== "undefined"){
// myvarは定義されています
}
以上がより速いJavaScript条件式の書き方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。