パフォーマンスのために、 `&&`および `||`で短絡評価を活用します
&&を使用して、高価な操作をスキップし、falsy値の短絡によってNULL/未定義を防ぎます。 2。使用||デフォルトを効率的に設定するには、すべてのfalsy値(0のような)を無効として扱うことに注意してください。 null/未定義のみ。 3。&&または||を使用しますデバッグログやリダイレクトなどの機能の簡潔な条件付き実行の場合、読みやすさを維持するための複雑なロジックは避けてください。 4。チェーン&&および||ネスティングを減らして早期に戻るために、返品値の真実性を考慮して正しい動作を確保します。短絡評価は、偽りの価値とコードの読みやすさを認識して賢く使用すると、パフォーマンスと明確さを改善します。
&&
および||
で短絡評価を使用します論理だけではありません。これは、パフォーマンスを改善し、JavaScript(およびそれをサポートする他の言語)で不必要な操作を回避する微妙で効果的な方法です。これらのオペレーターは、 true
またはfalse
を返すだけではありません。彼らは、結果を決定したオペランドの実際の値を返し、条件付き実行とデフォルト値のための強力なツールになります。

これらを賢く活用する方法は次のとおりです。
1。 &&
で高価な操作を避けてください
&&
オペレーターは左から右に評価し、1つのオペランドが偽物になるとすぐに停止します。これは、以前の条件が失敗した場合、関数呼び出しまたは重い計算を防ぐことができることを意味します。

//ユーザーがログインしてアクティブになっている場合にのみhopongeperation()を呼び出します if(user.isloggedin && user.isactive && chopnisoperation()){ //何かをします }
この場合、 user.isLoggedIn
がfalse
場合、javascriptはuser.isActive
をチェックすることさえなく、 expensiveOperation()
まったく実行されません。これにより、無駄なCPUサイクルが回避されます。
ユースケース:プロパティまたはメソッドにアクセスする前に、null/未定義から保護する:

user && user.profile && user.profile.getname();
これにより、 user
またはuser.profile
が未定義の場合、エラーが防止されます。 Modern JavaScriptにはオプションのチェーン( ?.
)がありますが、 &&
まだ古い環境で動作します。
2. ||
でデフォルトを効率的に設定します
||
オペレーターは最初のTruthy値を返します。これは、デフォルトの割り当てに最適です。
const timeout = config.timeout || 5000; const message = user.input || 「入力なし」;
config.timeout
がundefined
、 null
、または0
の場合、 5000
に戻ります。ただし、注意してください:有効な値として0
許可する場合、 ||
0
がfalsyであるため、それを無視します。
ゴッチャ: ||
null/未定義のチェックではなく、 falsyチェックを使用します。したがって、これは裏目に出ることができます:
const delay = config.delay || 100; // config.delayが0→100を使用する場合!
修正:使用??
(nullish coulescing)null/undefinedのみ:
const delay = config.delay ?? 100; // 0を尊重します
しかし、あなたが環境にない場合は??
、そして、入力が0
、 ""
、またはfalse
にならないことを知っています||
速くてきれいです。
3。IF if
の条件付き実行
副作用には短絡を使用できますが、これは読みやすくするために控えめに使用する必要があります。
debugmode && logdetailedinfo();
これは、 debugMode
がtrue
の場合にのみlogDetailedInfo()
のみを実行します。それは簡潔で、不要なときに関数呼び出しを完全にスキップします。
同様に:
isauthenticated || Redirecttologin();
認証されていない場合にのみリダイレクトします。繰り返しますが、左側が真実である場合、関数は呼び出されません。
注:複雑なロジックのためにこのスタイルを過剰に使用しないでください。読みやすさを傷つける可能性があります。しかし、単純なガードやデバッグログの場合、それは清潔でパフォーマンスです。
4。早期出口のチェーン条件
&&
と||
を組み合わせますロジックを合理化し、ネストを減らすには:
returnユーザー&& user.hasrole( 'admin')&& fetchdata();
ユーザーが存在し、管理者である場合、 fetchData()
結果を返します。それ以外の場合は、最初のfalsy値( undefined
またはfalse
)を返します。
または:
const result = isvalid?プロセス(データ):FallbackValue; //次のように書き直すことができます const result = isvalid && process(data)|| FallbackValue;
ただし、注意:これはprocess(data)
真実の値を返す場合にのみ機能します。 0
または""
を返すことができる場合、フォールバックは誤ってトリガーされる可能性があります。
結論:
&&
および||
を使用した短絡評価あなたをさせてください:
- 不要な関数呼び出しをスキップします
- ガード条項を介してエラーを防ぎます
- デフォルトを簡潔に割り当てます
- ランタイムのパフォーマンスを改善します
偽りの価値とコードの明確さに注意してください。賢く使用されているが、それは速くて読みやすい軽量の最適化です。
基本的に、条件をチェックしたり、デフォルトを設定したりした場合、短絡するのはあなたに好意を与えています。
以上がパフォーマンスのために、 `&&`および `||`で短絡評価を活用しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undress AI Tool
脱衣画像を無料で

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

Thenullcoalescingoperator(??)は、nullorundefined.1.ItreturnStherightoperand.2.unlikethelogicalor(||)オペレーター、?? joftriggergerback fornull

==の代わりに===を使用することは、PHPタイプの変換エラーを回避するための鍵です。==は予期しない結果を引き起こし、===正確な判断を確実にするために値とタイプを同時に比較するためです。たとえば、0 == "false"はtrueですが、0 === "false"はfalseであるため、0、空の文字列、またはfalseである可能性のある返品値を扱う場合、===は論理エラーを防ぐために使用する必要があります。

PHPの代替制御構造では、コロンと、混合HTMLの読みやすさを改善できる巻き毛のブレースの代わりに、EndifやEndforなどのキーワードを使用します。 1. if-elseif-elseはコロンで始まり、endifで終了し、条件ブロックをより明確にします。 2。foreachはテンプレートループで識別しやすく、endforeachはループの終了を明確に示しています。 3。めったに使用されないが、それらもサポートされています。この構文には、ビューファイルに明らかな利点があります。構文エラーを削減し、読みやすさを高め、HTMLタグ構造に似ています。しかし、混乱を避けるために、純粋なPHPファイルで巻き装置を使用し続ける必要があります。したがって、コードの保守性を向上させるために、PHPとHTMLを組み合わせたテンプレートでは、代替構文が推奨されます。

一致式は、PHP8でより簡潔で安全な代替品を提供します。 IF-ELSEIFおよびスイッチと比較して、緩いタイプの比較の誤差を回避するために、厳密な比較(===)を自動的に実行します。 2。一致は、値を直接返すことができる式で、割り当てと関数のリターンに適しているため、コードの単純さを改善します。 3。一致は常に厳密なタイプチェックを使用して、整数、ブール膜、弦の間の予期しない一致を防止します。 4.単一腕のマルチ値マッチング(0、false、 ''など)をサポートしますが、複雑な条件(範囲判断など)は依然としてif-elseifを必要とします。したがって、単一の変数の正確な値をマッピングするときに一致を使用する必要がありますが、複雑なロジックはif-elseifを保持します。

言語、コンパイラの最適化、論理構造に応じて、パフォーマンスに影響を与えることがあります。 1.ステートメントが順番に実行され、最悪の場合の複雑さがo(n)である場合、最も可能性の高い条件を最初に配置する必要があります。 2。スイッチステートメントは、コンパイラによってO(1)のジャンプテーブルに最適化できます。 3.単一の変数が複数の定数整数と比較され、多くの分岐があり、スイッチはより高速です。 4.範囲の判断、複雑な条件、非整数型以外の枝を少なくする場合、より適切であるか、同様のパフォーマンスがある場合。 5。異なる言語(C/C、Java、JavaScript、C#など)は、最適化度の異なるスイッチを持ち、実際のテストと組み合わせてテストする必要があります。最初にSWIを使用する必要があります

回避された国家のseyreducereadability; useif-elsechainsinstead.2.don'tuseternariesforsidefectslikefunctioncalls;

useguardclausestoreTorerlylyandflattenstructure.2.extractComplexConditionSINTODESINTIVESORVARIABLESFORCLALITYANDREUSE.3.REPLACEMULTIONPRECONDITIONCOMBINATIONSWITHALOUKUSTABLEARSTABLEARTORSTABLESTORTORSTALTORTORTABLESTALTERTALIZEPATTERNTRALIZELOGIC.4.APLOMORMORPHISPTYTTYLIMINATETET

&& and and and andはPHPでは同じ論理関数ですが、優先順位は異なり、異なる実行命令になります。 &&優先度はよりも高く、優先度は割り当てoperator =よりも低いです。したがって、$ success = trueandfalseは実際には($ success = true)andfalseとして解析され、$ successはまだ真実です。 1。&& and ||を使用します条件付き判断; 2。制御フロー($ file = fopen()ordie()などの使用およびおよびまたはのみでのみ; 3.複雑な式は、優先度を明確にするためにブラケットを使用する必要があります。 4.明示的に意図されていない限り、混合および/または割り当てを避けてください。
