目次
無条件と条件付き
&&
||
null
「論理割り当て」
x && = y
JSX in React
.babelrc
ホームページ ウェブフロントエンド jsチュートリアル JavaScriptの論理演算子の詳しい解説

JavaScriptの論理演算子の詳しい解説

Nov 10, 2020 pm 05:41 PM
javascript オペレーター

JavaScriptの論理演算子の詳しい解説

推奨チュートリアル: 「JavaScript ビデオ チュートリアル

論理代入は、既存の数学演算子および二項論理演算子の拡張です。まずそれらを確認してから、それらを組み合わせることで何が得られるかを見てみましょう。

まず、JS の 条件演算子無条件演算子の違いを見てみましょう。

無条件と条件付き

などの数学演算子は無条件です。

const x = 1 2 では、何があっても常に LHSRHS に加算し、その結果を x# に代入します。 ##。

LHS と RHS は数学分野の概念で、方程式の左側と右側を意味します。現在のシナリオでは、代入演算子の左側と右側です。変数が代入演算子の左側にある場合は LHS クエリが実行され、それ以外の場合は RHS クエリが実行されます。

const x = false 2 のような奇妙なコードを書くこともできます。 JS は最初に false の LHS を Number に変換するため、const x = Number (false) 2 が得られ、結果 は const x = になります。 0 2 。 LHS を RHS に追加し、最終的に #xx に割り当て、結果は 2 になります。

&&

などの論理演算子は条件付きです。

const x = true && 0 2

では、左側が最初に計算されます。これは ## です。 #真実###。 LHS の値は true であるため、次に値が 2 である RHS 演算を実行し、代入演算も実行します。結果は 2 になります。 const x = false && 0 2 と比較すると、左側は

false

であるため、右側は完全に無視されます。 なぜ RHS の計算を避けるべきなのか疑問に思われるかもしれません?一般的な 2 つの理由は、パフォーマンスの向上と副作用の回避です。

二項論理演算子

&& || ??

JSX では、条件付きレンダリングに

&&

||

をよく使用します。インターフェース。

?? は、nullish(null value) 合体演算子で、最近承認され、間もなく普及される予定です。これらはすべて二項論理演算子です。 LHS の結果が真の値であるかどうかをテストするには、&& を使用します。

    LHS の結果が虚数であるかどうかをテストするには、
  • || を使用します。
  • ?? を使用して、LHS が無効かどうかをテストします。
  • 仮想値と NullishJS の仮想値とは何ですか?

null

未定義

    false
  • NaN
  • 0
  • "" (空の文字列)
  • 次の 2 つの姉妹はヌル値とみなされます。
  • null

未定義

  • 二項論理演算子を使用すると、必ずしも
  • ブール値
  • が返されるわけではないことに注意してください。返される式の
  • LHS
または

RHS の値です。これらの式タイプの要点を明確にするために、ECMAScript ドキュメントの次の文を再検討すると役立ちます: && または ||

は、そうでない値を生成します。ブール型である必要がありますが、2 つのオペランド式の値のいずれかです。
いくつかの例
// &&
/ /如果 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
ログイン後にコピー
論理代入演算子
&&= ||= ??=

この演算子は、代入と条件付き論理演算子を組み合わせます。名前

「論理割り当て」

。たとえば、

x && = y

は、

x && (x = y) の略称です。 論理割り当てから返される値は、更新された割り当てではなく、評価された式の値です。 デフォルト引数や null 合体演算子などの以前の ECMAScript 機能により、論理割り当てによって提供される機能には明らかに冗長性があると主張する人もいるでしょう。ただし、この省略表現はスムーズに思えます。さらに多くの使用例が発見されるにつれて、きっと便利になるでしょう。

論理 AND 代入 (&&= )

// 逻辑与
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)
ログイン後にコピー
論理 OR 代入 (||= )

// 逻辑或
LHS ||= RHS
 
// 等价于
LHS || (LHS = RHS)
 
// 事例
// 如果 x 为真值,返回 x,否则将 y 赋值给 x
let x = NaN
const y = 100
x ||= y // x 为 100
 
// 与上面对应的长的写法
x || (x = y)
ログイン後にコピー
論理 NULL 代入 (??= )

// 逻辑 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 in React

let loading = true
const spinner = <Spinner />
loading &&= spinner
ログイン後にコピー

DOM

el.innerHTML ||= 'some default'
ログイン後にコピー

Object

// 如果对象没有 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

プログラミング関連の知識については、

プログラミング入門
をご覧ください。 !

以上がJavaScriptの論理演算子の詳しい解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 Dec 17, 2023 pm 02:54 PM

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

WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー Dec 17, 2023 pm 05:30 PM

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

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

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

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 Dec 17, 2023 pm 05:13 PM

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

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 ステータス コードとは、ブラウザがサーバーへのリクエストを開始したときに、サービスが

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 比較演算が含まれます。

See all articles