一般的でない js 演算演算子の概要

一般的でない js 演算演算子の概要

1. はじめに

js には多くの演算子があり、以前の記事でも触れました。例えば:

js 整数演算:

|0~~使用すると浮動小数点数を整数に変換でき、同様のparseIntMath.roundよりも効率が速くなります。ピクセルやアニメーションの変位効果を処理するときに非常に便利です。パフォーマンスの比較については、こちらをご覧ください。

var foo = (12.4 / 4.13) | 0; // 結果は3
var bar = ~~(12.4 / 4.13); //結果は3


もう一つの小さなトリックがあります、それは!!2感嘆符を使用すると、値をブール値にすばやく変換できます。テストできます!

var eee="eee";
警報(!!eee)


これらはいくつかの演算子です。詳細については、49 の JavaScript のヒントとコツを参照してください。js 演算子は単一の縦棒 "|" です。

今日はさらにいくつか追加します:

2. カンマ演算子

x = 1 とします。
関数 x は、次の式で表されます。
コンソールログ(x);
// 期待される出力: 2
2 = (2, 3) である。
コンソールログ(x);
// 期待される出力: 3

コンマ演算子は、右側の引数よりも左側の引数を評価します。右端の引数の値が返されます。

var a = 10、b = 20;

関数 CommaTest(){
    a++、b++、10 を返します。
}

var c = カンマテスト();

alert(a); // 11 を返す
alert(b); // 21 を返す
alert(c); // 10 を返す

関数呼び出し演算子について理解できたので、その競合を処理する方法を示す例を見てみましょう。

alert(2*5, 2*4); // 出力10

上記のコードは 10 を出力しますが、コンマ演算子の原則に従って解釈すると 8 を出力する必要があります。なぜ?

カンマ演算子はJavaScriptでは優先順位が最も低いため、覚えておくと非常に便利です。したがって、関数呼び出し演算子はコンマ演算子の前に実行されます。その結果、アラート関数は最初のパラメータの値を出力します。上記のコードを以下のように変更します。

alert((2*5, 2*4)); // 8を返す

3. JavaScript Null 結合演算子 (??)

null合体演算子 (??) は、左のオペランドが null またはundefined場合にのみ右のオペランドを返し、それ以外の場合undefined左のオペランドを返す論理演算子です。

これは、左側のオペランドが false の場合に右側のオペランドを返す論理 OR 演算子 (||) とは異なります。つまり、|| を使用して特定の変数のデフォルト値を設定すると、予期しない動作が発生する可能性があります。たとえば、false の場合 (たとえば、'' または 0)。以下の例を参照してください。

str = null||未定義とする
result = str??'haorooms blog' とします。
console.log(result)//haorooms ブログ const nullValue = null;
const emptyText = ""; // 空の文字列、false値、Boolean("") === false
定数someNumber = 42;

const valA = nullValue ?? "valA のデフォルト値";
const valB = emptyText ?? "valB のデフォルト値";
const valC = someNumber ?? 0;

console.log(valA); // "valA のデフォルト値"
console.log(valB); // "" (空の文字列は false ですが、null または undefined ではありません)
console.log(valC); // 42

4. JavaScript オプション連鎖演算子 (?.)

オプションの連鎖演算子 ( ?. ) を使用すると、チェーン内の各参照が有効であることを明示的に検証することなく、接続されたオブジェクトのチェーンの奥深くにあるプロパティの値を読み取ることができます。 ?. 演算子は . 連鎖演算子と同様に機能しますが、参照が null の場合 (null または undefined) にエラーが発生しず、式が戻り値を短絡する点が異なります。

オプションの連鎖演算子 (?.) を使用すると、ブラウザはエラーを報告しません。

const デモ = {
    名前: 'haorooms'、
    猫: {
        名前: 「ハオルームス猫」
    }
};
console.log(demo.dog?.name); 
// 期待される出力: 未定義
console.log(demo.what?.());
// 期待される出力: 未定義


関数呼び出し:

結果を someOne.customMethod?.() とします。

someOne nullまたはundefinedにできるようにするには、次のようにsomeOne?.customMethod?.()を記述する必要があります。

式によるオプションの連鎖:

nestedProp = obj?.['prop' + 'Name']とします。

配列にアクセスするためのオプションの連鎖:

arrayItem = arr?とします。[42];

短絡計算:

潜在的にNullObj = null とします。
x = 0 とします。
prop = 潜在的にNullObj?.[x++] とします。

 
console.log(x); // x は増加せず、0 を出力します

//式でオプションの連鎖を使用する場合、左のオペランドがnullまたは未定義の場合、式は評価されません。let customer = {
  名前: "haorooms",
  詳細: { 年齢: 82 }
};

customerCity = customer?.city ?? "中国" とします。
console.log(customerCity); // "中国"

珍しい js 演算演算子のまとめに関するこの記事はこれで終わりです。より関連性の高い js 演算演算子のコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • これまでにないほど詳細に解説されたJavaScript演算子
  • JavaScript の基本演算子
  • js の一般的でない演算子と演算子の概要
  • JS の効率的なマジック演算子の概要
  • JS のあらゆる場所で絶対等価演算子の使用をやめる
  • いつものJS演算子の説明を見てみましょう

<<:  開発にVscodeとdockerを組み合わせて使用​​する詳細なプロセス

>>:  CSSは、閉じることができるマスクレイヤーを備えたポップアップウィンドウ効果を実装します。

推薦する

ドロップダウンメニューを表示または非表示にするJavaScript

この記事では、ドロップダウンメニューを表示および非表示にするJavaScriptの具体的なコードを参...

IISとAPACHEはHTTPSへのHTTPリダイレクトを実装しています

7 のMicrosoft の公式 Web サイトから HTTP Rewrite モジュールをダウンロ...

シンプルなHTMLとCSSの使い方の詳細な説明

HTML と CSS を含む JD.com のホームページの静的ページ効果を 3 日間で完成させます...

jQueryは検証コード送信のコントロールボタンを無効にする機能を実装します

必要な効果: 確認コードを送信するためにクリックした後、ボタンは無効になり、5 秒後に無効解除されま...

Reactの簡単な紹介

目次1. CDNの紹介1.1 react (最初にインポート) 1.2 react-dom(後ほど紹...

Mysql InnoDBとMyISAMの違いの分析

MySQL は、myisam、innodb、memory、archive、example など、多く...

js のループメソッドとさまざまなトラバーサルメソッド

目次forループwhileループdo-while ループループのネストトラバーサルメソッド~のために...

WeChatアプレットは水平および垂直スクロールを実現

この記事の例では、WeChatアプレットの水平スクロールと垂直スクロールを実現するための具体的なコー...

JavaScript 配列重複排除ソリューション

目次方法1: set: データ型ではなくデータ構造であり、メンバーは一意である方法2: オブジェクト...

JSは要素のドラッグとプレースホルダー機能を実装します

このブログ投稿は、ブロガーが数日前に取り組んだプロジェクトで遭遇した困難についてです。これを学んだ後...

C++ を使用して MySQL に接続する方法

C++でMySQLに接続する際の参考情報です。具体的な内容は以下のとおりです。 MySQLCon ク...

react+antd.3x は IP 入力ボックスを実装します

この記事では、IP入力ボックスを実装するための react+antd.3x の具体的なコードを参考ま...

Centos7 で crontab + シェル スクリプトによる定期的な自動ファイル削除の問題を解決する

問題の説明:最近、rsyncで毎回同期するデータ量が多いが、データベースのbakファイルを保持する必...

dns-prefetch とは何ですか? フロントエンドの最適化: DNS の事前解決によりページ速度が向上します

目次背景1. dns-prefetch とは何ですか? 2. dns-prefetch を設定するに...

JS の難しさ 同期と非同期、スコープとクロージャ、プロトタイプとプロトタイプ チェーンの詳細な説明

目次JS スリーマウンテンズ同期 非同期同期と非同期の違い範囲、終了関数スコープチェーンブロックスコ...