JS の論理代入演算子の詳細な分析
この記事では、JavaScript の論理代入演算子について詳しく説明します。一定の参考値があるので、困っている友達が参考になれば幸いです。
#論理代入は、既存の数学演算子および二項論理演算子の拡張機能です。まずそれらを確認してから、それらを組み合わせることで何が得られるかを見てみましょう。
まず、JS の 条件演算子
と 無条件演算子
の違いを見てみましょう。
無条件と条件付き
などの数学演算子は無条件です。
const x = 1 2
では、何があっても常に LHS
を RHS
に加算し、その結果は次のように代入されます。 ###バツ###。 LHS と RHS は数学分野の概念で、方程式の左側と右側を意味します。現在のシナリオでは、代入演算子の左側と右側です。変数が代入演算子の左側にある場合は LHS クエリが実行され、それ以外の場合は RHS クエリが実行されます。
のような奇妙なコードを書くこともできます。 JS は最初に false
の LHS を Number
に変換するため、const x = Number (false) 2
が得られ、結果 は const x = になります。 0 2
。 LHS を RHS に追加し、最終的に #xx に割り当て、結果は
2 になります。
などの論理演算子は条件付きです。
const x = true && 0 2
では、最初に LHS を計算します。 、これは true です。 LHS の値は
true であるため、次に値が 2 である RHS 演算を実行し、代入演算も実行します。結果は
2 になります。
const x = false && 0 2
false であるため、右側は完全に無視されます。
なぜ RHS の計算を避けるべきなのか疑問に思われるかもしれません?一般的な 2 つの理由は、
パフォーマンスの向上と副作用の回避です。
二項論理演算子
##& || ??
JSXでは && をよく使用します。 ||
条件付きでインターフェイスをレンダリングします。?? は、
nullish(null value) 合体演算子で、最近承認され、間もなく普及される予定です。これらはすべて二項論理演算子です。
LHS の結果が真の値であるかどうかをテストするには、
&&
を使用します。
- LHS の結果が虚数であるかどうかをテストするには、
- ||
を使用します。
- ??
を使用して、LHS が無効かどうかをテストします。
仮想値と Nullish
null
未定義
- false
- NaN
- 0
- "" (空の文字列)
- 次の 2 つの姉妹はヌル値とみなされます。
- null
未定義
- 二項論理演算子を使用すると、必ずしも ブール値
- が返されるわけではないことに注意してください。返される式の LHS
RHS の値です。これらの式タイプの要点を明確にするために、ECMAScript ドキュメントの次の文を再検討すると役立ちます:
&&
または
||
論理代入演算子#いくつかの例
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>// && / /如果 LHS 是真值,计算并返回 RHS,否则返回 LHS true && 100**2 // 10000 "Joe" && "JavaScript" // "JavaScript" false && 100**2 // false "" && 100**2 // "" NaN && 100**2 // NaN null && 100**2 // null undefined && 100**2 // undefined</pre><div class="contentsignin">ログイン後にコピー</div></div>
&&= ||= ??=
この演算子は代入と条件論理演算子を組み合わせたものであるため、
「論理代入」という名前が付けられています。たとえば、x && = y は、
x && (x = y) の略称です。 論理割り当てから返される値は、更新された割り当てではなく、評価された式の値です。 デフォルト引数や null 合体演算子などの以前の ECMAScript 機能により、論理割り当てによって提供される機能には明らかにある程度の冗長性があると主張できます。ただし、この省略表現はスムーズに思えます。さらに多くの使用例が発見されるにつれて、きっと便利になるでしょう。
// 逻辑与 LHS &&= RHS // 等价于 LHS && (LHS = RHS) // 事例 // if x is truthy, assign x to y, otherwise return x // 如果 x 为真值,则将 y 赋值给 x, 否则返回 x let x = 1 const y = 100 x &&= y // x 为 100 // 与上面对应的长的写法 x && (x = y)
// 逻辑或
LHS ||= RHS
// 等价于
LHS || (LHS = RHS)
// 事例
// 如果 x 为真值,返回 x,否则将 y 赋值给 x
let x = NaN
const y = 100
x ||= y // x 为 100
// 与上面对应的长的写法
x || (x = y)
ログイン後にコピー
論理的な null 代入 (??=)// 逻辑或 LHS ||= RHS // 等价于 LHS || (LHS = RHS) // 事例 // 如果 x 为真值,返回 x,否则将 y 赋值给 x let x = NaN const y = 100 x ||= y // x 为 100 // 与上面对应的长的写法 x || (x = y)
// 逻辑 nullish
LHS ??= RHS
// 等价于
LHS ?? (LHS = RHS)
// 事例
// if x.z is nullish, assign x.z to y
let x = {}
let y = 100;
x.z ??= y // x 为 { z: 100 }
// 与上面对应的长的写法
x.z ?? (x.z = y)
ログイン後にコピー
実装における論理的な代入の例// 逻辑 nullish LHS ??= RHS // 等价于 LHS ?? (LHS = RHS) // 事例 // if x.z is nullish, assign x.z to y let x = {} let y = 100; x.z ??= y // x 为 { z: 100 } // 与上面对应的长的写法 x.z ?? (x.z = y)
React の JSX
let loading = true
const spinner = <Spinner />
loading &&= spinner
ログイン後にコピー
DOMlet loading = true const spinner = <Spinner /> loading &&= spinner
el.innerHTML ||= 'some default'
// 如果对象没有 onLoad 方法,则设置一个方法
const config = {};
config.onLoad ??= () => console.log('loaded!')
const myObject = { a: {} }
myObject.a ||= 'A'; // 被忽略,因为 myObject 中 a 的值为真值
myObject.b ||= 'B'; // myObject.b 会被创建,因为它不丰 myObject 中
// {
// "a": {}
// "b": "B"
// }
myObject.c &&= 'Am I seen?'; // 这里的 myObject.c 为虚值,所以什么都不会做
Chrome はすでに論理割り当てをサポートしています。下位互換性を確保するには、トランスフォーマーを使用します。 Babel を使用している場合は、プラグイン
npm install @babel/plugin-proposal-logical-assignment-operators
をインストールし、次の内容を .babelrc に追加してください:
{ "plugins": ["@babel/plugin-proposal-logical-assignment-operators"] }
論理割り当ては新しい概念であるため、関連する知識はまだあまりありません。論理割り当ての他の優れた使用例がある場合は、以下にコメントを残してください。
元のアドレス: https://seifi.org/javascript/javascript-logical-assignment-operators-deep-dive.html
著者: Joe Seifi
翻訳アドレス:https://segmentfault.com/a/1190000039923017
プログラミング関連の知識については、 プログラミング ビデオ をご覧ください。 !
以上がJS の論理代入演算子の詳細な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

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

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

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

ホットトピック









WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 はじめに: 技術の継続的な発展により、音声認識技術は人工知能の分野の重要な部分になりました。 WebSocket と JavaScript をベースとしたオンライン音声認識システムは、低遅延、リアルタイム、クロスプラットフォームという特徴があり、広く使用されるソリューションとなっています。この記事では、WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法を紹介します。

WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

JavaScript と WebSocket を使用してリアルタイム オンライン注文システムを実装する方法の紹介: インターネットの普及とテクノロジーの進歩に伴い、ますます多くのレストランがオンライン注文サービスを提供し始めています。リアルタイムのオンライン注文システムを実装するには、JavaScript と WebSocket テクノロジを使用できます。 WebSocket は、TCP プロトコルをベースとした全二重通信プロトコルで、クライアントとサーバー間のリアルタイム双方向通信を実現します。リアルタイムオンラインオーダーシステムにおいて、ユーザーが料理を選択して注文するとき

WebSocket と JavaScript を使用してオンライン予約システムを実装する方法 今日のデジタル時代では、ますます多くの企業やサービスがオンライン予約機能を提供する必要があります。効率的かつリアルタイムのオンライン予約システムを実装することが重要です。この記事では、WebSocket と JavaScript を使用してオンライン予約システムを実装する方法と、具体的なコード例を紹介します。 1. WebSocket とは何ですか? WebSocket は、単一の TCP 接続における全二重方式です。

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

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

使用法: JavaScript では、insertBefore() メソッドを使用して、DOM ツリーに新しいノードを挿入します。このメソッドには、挿入される新しいノードと参照ノード (つまり、新しいノードが挿入されるノード) の 2 つのパラメータが必要です。

JavaScript は Web 開発で広く使用されているプログラミング言語であり、WebSocket はリアルタイム通信に使用されるネットワーク プロトコルです。 2 つの強力な機能を組み合わせることで、効率的なリアルタイム画像処理システムを構築できます。この記事では、JavaScript と WebSocket を使用してこのシステムを実装する方法と、具体的なコード例を紹介します。まず、リアルタイム画像処理システムの要件と目標を明確にする必要があります。リアルタイムの画像データを収集できるカメラ デバイスがあるとします。
