一般的でない 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は、閉じることができるマスクレイヤーを備えたポップアップウィンドウ効果を実装します。

推薦する

MySQL オンラインリカバリ UNDO テーブルスペース 実戦記録

1 MySQL5.6 1.1 関連パラメータMySQL 5.6 では、innodb_undo_dir...

LinuxサーバのSSHクラッキング防止方法(推奨)

1. Linuxサーバーは、/etc/hosts.denyを設定して、相手のIPがSSH経由でサー...

HTML 5のドラフトは正式な標準にはならなかった

<br />昨日、W3C で新しいHTML 5 ドラフト (ワーキング ドラフト) が ...

HTMLのインライン要素とブロックレベル要素とは何か、またそれらの違いは何ですか

以前の就職面接で面接官が尋ねた質問を覚えています。「インライン要素とは何ですか。ブロックレベル要素と...

MySQL 学習データベースバックアップの詳細な説明

目次1.DB、DBMS、SQL 2. データベースの特徴3. SQL分類4. MySQLを起動および...

ChromeとIEに対応したWMPに埋め込まれたHTMLの詳細な紹介

実際には、対応する記述方法は多数ありますが、最も一般的なのは object + embedded で...

ウェブデザイン研究における XHTML の応用の概要

<br />一般的に、「標準的な Web ページ」のファイル構成は XHTML CSS ...

Vueのvue-tree-colorコンポーネントの組織構造図の事例を詳しく解説

目次ネプローダーをインストールするプラグインのインポート始める配置折りたたみディスプレイノードをクリ...

MySQLがbinlogファイルを手動で登録し、マスタースレーブ異常を引き起こす理由

1. 問題の原因友人の @水米田 から、POSITION に基づくマスタースレーブについて質問があり...

PythonはデータベースMySQLの解凍バージョンのインストール構成に接続し、問題が発生しました

導入今日は Python でデータベースに接続する方法を学んだので、MySQL データベースをインス...

タイプファイルの入力ボタン機能の研究

<br />一部のWebサイトでアップロードする場合、「参照」ボタンをクリックすると[フ...

MySQL接続がハングする理由の詳細な説明

目次1. 背景建築問題現象2. 分析プロセス接続プール不安に陥る雲を晴らして光を見よう3. 解決策I...

MySql への新しいユーザーの追加、ユーザー用のデータベースの作成、ユーザーへの権限の割り当ての概要

1. 新しいユーザーを追加するローカルIPアクセスのみを許可する '123456' ...

MySQL 5.7.27 のインストールと設定方法のグラフィックチュートリアル

MySQL 5.7.27の詳細なダウンロード、インストール、および構成チュートリアルは参考までに、具...

Vue ログインページ用の動的パーティクル背景プラグインの実装

目次動的パーティクル効果は次のとおりです。プラグインをインストールする動的パーティクル効果は次のとお...