ホームページ ウェブフロントエンド jsチュートリアル JavaScript 演算子 || の使用テクニックの詳細な例

JavaScript 演算子 || の使用テクニックの詳細な例

Jul 19, 2017 am 09:16 AM
javascript スキル オペレーター

js AND-OR 演算子 || は、コードを合理化し、プログラムの可読性を下げるために使用できる素晴らしいツールです。

要件 1.

成長速度の表示規則は次のとおりであるとします。
成長率 5 の場合は 1 つの矢印が表示されます。
成長率 12 の場合は 3 つの矢印が表示されます。 15 の成長率は 4 つの矢印を表示します。
その他の場合は 0 つの矢印を表示します。
コードで実装するにはどうすればよいですか?

要件 2.

成長率の表示規則は次のとおりであるとします。


成長率が 12 を超える場合は 4 つの矢印が表示されます

成長率が > の場合は 3 つの矢印が表示されます10;

成長率 > 5 の場合は 2 つの矢印が表示されます。

成長率 > の場合は 1 つの矢印が表示されます。

成長率 そうするとswitchで実装するのは非常に面倒です。

では、たった 1 行のコードでそれを実装することを考えたことはありますか?
OK、JS の強力な表現力を見てみましょう:

var add_level = (add_step==5 && 1) || (add_step==10 && 2) || (add_step==12 && 3) || (add_step==15 && 4) || 0;
ログイン後にコピー

さらに強力で優れています:

var add_level={'5':1,'10':2,'12':3,'15':4}[add_step] || 0;
ログイン後にコピー
var add_level = (add_step>12 && 4) || (add_step>10 && 3) || (add_step>5 && 2) || (add_step>0 && 1) || 0;
ログイン後にコピー

まず最初に、概念を整理しましょう: js ロジックでは、操作中に 0, " "、null、false、unknown、NaN はすべて false と判定され、それ以外はすべて true と判定されます (何も抜けていないようです。確認してください)。これを覚えておくと、| と && を使用するときに問題が発生します。

ところで: if(!!attr); というコードをよく見ると、なぜ if(attr) を直接書かないのかとよく聞かれます
実際、これはより厳密な書き方です:

テストしてください。 typeof 5 と typeof!5 の違い。 !! の機能は、他の型の変数を bool 型に変換することです。

以下では主に論理演算子 && と || について説明します。
ほとんどすべての言語で、|| と && は「短絡」原則に従います。たとえば、&& の最初の式が false の場合、2 番目の式は処理されません。一方、|| はその逆です。
js も上記の原則に従います。しかし、さらに興味深いのは、それらが返す値です。
コード: var attr = true && 4 && “aaa”;
attr 演算の結果は単に true または false ではなく、「aaa」になります
見てみましょう ||:
コード: var attr = attr || ""; この操作は、変数が定義されているかどうかを判断するためによく使用されます。定義されていない場合は、関数パラメータのデフォルト値を定義する場合に便利です。 php とは異なり、js は型パラメーターに func($attr=5) を直接定義できるためです。繰り返しになりますが、上記の原則を覚えておいてください。実際のパラメータが 0、""、null、false、未定義、または NaN である必要がある場合、それも false として扱われます。

if(a >=5){ 
alert("你好"); 
}
ログイン後にコピー

は次のように記述できます:

a >= 5 && alert("你好");
ログイン後にコピー

これに必要なコードは 1 行だけです。ただし、注意すべき点が 1 つあります。js の || と && の機能はコードを合理化するのに役立ちますが、コードの可読性も低下させるということです。そのためには私たち自身で重さを量る必要があります。
一方で、js コードを合理化すると、特に広く使用されている js パブリック ライブラリのネットワーク トラフィックを大幅に削減できます。個人的にお勧めするのは、比較的複雑なアプリケーションの場合は、適切にコメントを書くことです。これも式と同じで、コードを簡素化することはできますが、可読性が低下し、コードを読む人への要求が高くなります。コメントを書くのが最善の方法です。

これらのテクニックを使用する必要はありませんが、これらのテクニックは広く使用されているため、特に JQuery などの JS ボックスのコードを理解していなければなりません。他の人のコードを理解するのが難しい。
var Yahoo = Yahoo || のように、これは非常に広く使用されています。
OK、最後に jQuery のコードを見てみましょう:

var wrap = 
    // option or optgroup 
    !tags.indexOf("<opt") && 
    [ 1, "<select multiple=&#39;multiple&#39;>", "</select>" ] || 
    !tags.indexOf("<leg") && 
    [ 1, "<fieldset>", "</fieldset>" ] || 
    tags.match(/^<(thead|tbody|tfoot|colg|cap)/) && 
    [ 1, "<table>", "</table>" ] || 
    !tags.indexOf("<tr") && 
    [ 2, "<table><tbody>", "</tbody></table>" ] || 
    // <thead> matched above 
    (!tags.indexOf("<td") || !tags.indexOf("<th")) && 
    [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ] || 
    !tags.indexOf("<col") && 
    [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ] || 
    // IE can&#39;t serialize <link> and <script> tags normally 
    !jQuery.support.htmlSerialize && 
    [ 1, "p<p>", "</p>" ] || 
    [ 0, "", "" ]; 
    // Go to html and back, then peel off extra wrappers 
    p.innerHTML = wrap[1] + elem + wrap[2]; 
    // Move to the right depth 
    while ( wrap[0]-- ) 
        p = p.lastChild;
ログイン後にコピー

このコードは $(html) を処理するために作成者によって使用されます。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

C言語における+=演算子の意味と使い方の解析 C言語における+=演算子の意味と使い方の解析 Apr 03, 2024 pm 02:27 PM

+= 演算子は、左オペランドの値を右オペランドの値に加算し、その結果を左オペランドに割り当てるために使用されます。これは数値型に適しており、左オペランドは書き込み可能である必要があります。

Python 構文のマインド マップ: コード構造の深い理解 Python 構文のマインド マップ: コード構造の深い理解 Feb 21, 2024 am 09:00 AM

Pythonはそのシンプルで読みやすい構文から幅広い分野で広く使われています。プログラミングの効率を向上させ、コードがどのように機能するかを深く理解するためには、Python 構文の基本構造をマスターすることが重要です。この目的を達成するために、この記事では、Python 構文のさまざまな側面を詳しく説明した包括的なマインド マップを提供します。変数とデータ型 変数は、Python でデータを保存するために使用されるコンテナです。マインド マップには、整数、浮動小数点数、文字列、ブール値、リストなどの一般的な Python データ型が表示されます。各データ型には独自の特性と操作方法があります。演算子 演算子は、データ型に対してさまざまな操作を実行するために使用されます。マインド マップは、算術演算子、比率など、Python のさまざまな演算子の種類をカバーしています。

簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 Jan 05, 2024 pm 06:08 PM

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

JavaScript で HTTP ステータス コードを簡単に取得する方法 JavaScript で HTTP ステータス コードを簡単に取得する方法 Jan 05, 2024 pm 01:37 PM

JavaScript で HTTP ステータス コードを取得する方法の紹介: フロントエンド開発では、バックエンド インターフェイスとの対話を処理する必要があることが多く、HTTP ステータス コードはその非常に重要な部分です。 HTTP ステータス コードを理解して取得すると、インターフェイスから返されたデータをより適切に処理できるようになります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法と、具体的なコード例を紹介します。 1. HTTP ステータス コードとは何ですか? HTTP ステータス コードとは、ブラウザがサーバーへのリクエストを開始したときに、サービスが

簡単な解決策: pip ミラー ソースの使用テクニックの完全ガイド 簡単な解決策: pip ミラー ソースの使用テクニックの完全ガイド Jan 16, 2024 am 10:31 AM

ワンクリック ソリューション: pip ミラー ソースの使用スキルをすばやくマスターします はじめに: pip は、Python で最も一般的に使用されるパッケージ管理ツールであり、Python パッケージのインストール、アップグレード、管理を簡単に行うことができます。ただし、よく知られている理由により、デフォルトのミラー ソースを使用してインストール パッケージをダウンロードすると時間がかかるため、この問題を解決するには、国内のミラー ソースを使用する必要があります。この記事では、pip ミラー ソースの使用スキルをすぐにマスターする方法と、具体的なコード例を紹介します。始める前に、pip ミラー ソースの概念を理解してください。

Go言語で演算子の優先順位を並べ替える方法 Go言語で演算子の優先順位を並べ替える方法 Dec 21, 2023 pm 05:03 PM

Go 言語では、演算子は優先順位の高いものから低いものの順に評価されます。一般的な演算子の優先順位: 1. 括弧: () (最高の優先順位、演算の順序を強制するために使用)、2. 単項演算子、3. 乗算演算子、4. 加法演算子、5. シフト演算子、6. ビット演算子; 7. 比較演算子; 8. 論理演算子; 9. 条件演算子(三項演算子); 10. 代入演算子など

Python オペレーター: 初心者からマスターまでの究極のガイド Python オペレーター: 初心者からマスターまでの究極のガイド Mar 11, 2024 am 09:13 AM

Python 演算子の概要 演算子は、2 つ以上のオペランド間の演算を実行するために使用される特殊な記号またはキーワードです。 Python には、基本的な数学演算から複雑なデータ操作まで、幅広い用途をカバーするさまざまな演算子が用意されています。数学演算子 数学演算子は、一般的な数学演算を実行するために使用されます。演算子の演算例 + 加算 a + b - 減算 a-b * 乗算 a * b / 除算 a / b % モジュロ演算 (剰余を取る) a % b ** べき乗演算 a ** b // 整数除算 (剰余) a//b 論理演算子 論理演算子は、ブール値を連結し、条件を評価するために使用されます。これらには、演算子の演算例と、論理演算と aandbor 論理演算、または aorbnot 論理演算の not not 比較演算が含まれます。

Go 言語の演算子の優先順位リスト、最も高い優先順位を持つ演算子はどれですか? Go 言語の演算子の優先順位リスト、最も高い優先順位を持つ演算子はどれですか? Jan 03, 2024 pm 04:59 PM

Go 言語には多数の演算子があり、さまざまな数学的および論理的演算を実行するためによく使用されます。各演算子には独自の優先順位があり、式内で演算子が評価される順序が決まります。この記事では、Go言語の演算子の優先順位ランキングを紹介し、最も優先度の高い演算子を見つけます。 Go 言語の演算子は、優先順位の高いものから低いものの順に次のとおりです。括弧: ()。括弧は演算子の優先順位を変更するために使用されます。式の中のかっこが最初に評価されます。単項演算子: +、-、!。単項演算子は 1 つだけを意味します

See all articles