この記事は、JS の暗黙的な変換に関する知識を提供します (例付き)。必要な方は参考にしていただければ幸いです。
[] == ![] //true ==> "" == false 123 ^ [] //123 ==> 123 ^ 0 ~{} //-1 ==> ~0 {} >= {1,2} //true ==>因为大于等于的比较,不是相等的比较,所以[object Object] >=[object Object] [null] == "" //true ==> [""] == ""
単項演算子: * 演算子、/ 演算子を含む Number() による変換はすべて次の関数によって変換されます。 Number()
+undefined //NaN
論理演算子:! オペランドをブール値に変換する Boolean() と同等 型変換
ビット演算: ~、|、&、^;1 つのオペランドが NaN の場合、オペランドが 0 であることと同等です;
//由以下变化可以证得: NaN ^ NaN ^ NaN = 0
Plus 演算子、より複雑です
最高の優先順位は文字列です。文字列に追加されたオペランドはすべて String (x) として文字列になり、文字列の連結が実行されます
console.log("a" + 1); //"a1" console.log("a" + "1"); //"a1" console.log("a" + false); //"afalse" console.log("a" + undefined); //"aundefined" console.log("a" + NaN); //"aNaN" console.log("a" + null); //"anull" console.log("a" + {}); //"a[object Object]"
2 番目は数値であり、オブジェクトは通常の状況では文字列型を出力します。
//console.log(1 + "1"); //"11" console.log(1 + 1); //2 console.log(1 + true); //2 console.log(1 + undefined); //NaN console.log(1 + NaN); //NaN console.log(1 + null); //1 console.log(1 + {}); //"1[object,Object]"
一方がブール値の場合、または両方がブール値の場合は、未定義および未定義の場合も同様に数値として処理されます。 null の場合、
console.log(true + true); //2 console.log(true + undefined); //NaN console.log(true + NaN); //NaN console.log(true + null); //1 console.log((true + [NaN])); //"trueNaN"
マイナス記号の場合、両側が Number()
比較演算: ==、>、< ;, >=, >=, != ルール (昇格 3 からの抜粋) に従います:
注目に値します: オブジェクト間の >= と = =(!=) の比較方法は異なります。 toString()の戻り値の比較、後者は参照アドレスの比較
両側が文字列の場合は文字エンコードサイズで比較
オペランドの一方がboolean、string、の場合またはオブジェクトの場合は、数値型の値に変換して比較します。
以上がjs暗黙的変換の知識解説(例付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。