JavaScript における比較演算子の暗黙的な型変換の概要 (例付き)
この記事では、JavaScript における比較演算子の暗黙的な型変換について紹介します (例とともに)。一定の参考値があります。困っている友人は参照できます。お役に立てれば幸いです。
コード内で「==」と「===」をよく見かけると思いますが、比較演算子とその暗黙の変換について本当に理解していますか?今日は比較演算子について再理解しましょう。
合同演算子===
説明: 厳密な一致、型変換なし、データ型と値はまったく同じである必要があります
先判断类型,如果类型不是同一类型的话直接为false; 1 对于基本数据类型(值类型): Number,String,Boolean,Null和Undefined:两边的值要一致,才相等 console.log(null === null) // true console.log(undefined === undefined) // true 注意: NaN: 不会等于任何数,包括它自己 console.log(NaN === NaN) // false 2 对于复杂数据类型(引用类型): Object,Array,Function等:两边的引用地址如果一致的话,是相等的 arr1 = [1,2,3]; arr2 = arr1; console.log(arr1 === arr2) // true
等価演算子==
非厳密一致: 型変換は可能ですが、前提条件のある 5 つの状況があります
(次のコードは例として x == y を使用します)
x と y は両方とも null または未定義です:
ルール: 暗黙的な型変換なし、無条件で true を返します
console.log ( null == undefined );//true console.log ( null == null );//true console.log ( undefined == undefined );//true
x または y が NaN: NaN はどの数値にも等しくありません
ルール: 暗黙的な型変換なし、無条件で false を返します
console.log ( NaN == NaN );//false
x と y は文字列、ブール値、number
です。 ルール: 暗黙的な型変換があり、数値型ではないデータをnumber
console.log ( 1 == true );//true (1) 1 == Number(true) console.log ( 1 == "true" );//false (1) 1 == Number('true') console.log ( 1 == ! "true" );//false (1) 1 == !Boolean('true') (2) 1 == !true (3) 1 == false (4)1 == Number(false) console.log ( 0 == ! "true" );//true console.log(true == 'true') // false
x または y が複合データ型に変換します。複合データ型の元の値が最初に取得され、次に比較されます。
複合データ型の元の値: 最初に valueOf メソッドを呼び出し、次に toString メソッドを呼び出します。
valueOf: 通常、デフォルトでそれ自体を返します。
Array toString: デフォルトでは、各要素を結合するために join メソッドが呼び出され、結合された文字列が返されます。
console.log ( [].toString () );//空字符串 console.log ( {}.toString () );//[object Object] 注意: 空数组的toString()方法会得到空字符串, 而空对象的toString()方法会得到字符串[object Object] (注意第一个小写o,第二个大写O哟) console.log ( [ 1, 2, 3 ].valueOf().toString());//‘1,2,3’ console.log ( [ 1, 2, 3 ] == "1,2,3" );//true (1)[1,2,3].toString() == '1,2,3' (2)'1,2,3' == '1,2,3' console.log({} == '[object Object]');//true
x と y は両方とも複合データ型です:
ルールアドレスのみを比較し、アドレスが一致する場合は true を返し、一致しない場合は false を返します
var arr1 = [10,20,30]; var arr2 = [10,20,30]; var arr3 = arr1;//将arr1的地址拷贝给arr3 console.log ( arr1 == arr2 );//虽然arr1与arr2中的数据是一样,但是它们两个不同的地址 console.log ( arr3 == arr1 );//true 两者地址是一样 console.log ( [] == [] );//false console.log ( {} == {} );//false
古典的な面接の質問
注意:八种情况转boolean得到false: 0 -0 NaN undefined null '' false document.all() console.log([] == 0); //true // 分析:(1) [].valueOf().toString() == 0 (2) Number('') == 0 (3) false == 0 (4) 0 == 0 console.log(![] == 0); //true // 分析: 逻辑非优先级高于关系运算符 ![] = false (空数组转布尔值得到true) console.log([] == []); //false // [] 与右边逻辑非表达式结果比较 //(1) [] == !Boolean([]) (2) [] == !true (3)[] == false (4) [].toString() == false (5)'' == false (6)Number('0') == Number(false) console.log([] == ![]); //true onsole.log({} == {}); //false // {} 与右边逻辑非表达式结果比较 //(1){} == !{} (2){} == !true (3){} == false (4){}.toString() == false (5)'[object Object]' == false (6)Number('[object Object]') == false console.log({} == !{}); //false
異常な面接の質問
var a = ??? if(a == 1 && a == 2 && a == 3 ){ console.log(1) } //如何完善a,使其正确打印1 //答案 var a = { i : 0, //声明一个属性i valueOf:function ( ) { return ++a.i; //每调用一次,让对象a的i属性自增一次并且返回 } } if (a == 1 && a == 2 && a == 3){ //每一次运算时都会调用一次a的valueOf()方法 console.log ( "1" ); }
この記事はここで終了です。その他のエキサイティングなコンテンツについては、PHP 中国語 Web サイトの JavaScript ビデオ チュートリアル 列に注目してください。
以上がJavaScript における比較演算子の暗黙的な型変換の概要 (例付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

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

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

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

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

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

ホットトピック











HTML の表の境界線に関するガイド。ここでは、HTML でのテーブルの境界線の例を示しながら、テーブル境界線を定義する複数の方法について説明します。

これは、HTML でのネストされたテーブルのガイドです。ここでは、テーブル内にテーブルを作成する方法をそれぞれの例とともに説明します。

HTML マージン左のガイド。ここでは、HTML margin-left の概要とその例、およびそのコード実装について説明します。

HTML テーブル レイアウトのガイド。ここでは、HTML テーブル レイアウトの値と例および出力について詳しく説明します。

HTML 入力プレースホルダーのガイド。ここでは、コードと出力とともに HTML 入力プレースホルダーの例について説明します。

HTML オンクリック ボタンのガイド。ここでは、それらの紹介、動作、例、およびさまざまなイベントでの onclick イベントについてそれぞれ説明します。

HTML でのテキストの移動に関するガイド。ここでは、概要、マーキー タグが構文でどのように機能するか、および実装例について説明します。
