javaScript學習之隱式轉換

2021-09-13 10:49:28 字數 2242 閱讀 4228

搬家篇三
== !                  //true  ==> "" == false

123 ^ //123 ==> 123 ^ 0

~{} //-1 ==> ~0

{} >= //true ==>因為大於等於的比較,不是相等的比較,所以[object object] >=[object object]

[null] == "" //true ==> [""] == ""

+undefined   //nan
//由以下變化可以證得:

nan ^ nan ^ nan = 0

優先順序最高的是字串,任何運算元與字串相加都將其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]"

其次number,而object在正常情況下輸出的就是string型別

+ "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]"

當一方為boolean,或者兩方都是boolean時,都將其進行number處理,同理undefined與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"

1.null和undefined是相等的

2.要比較相等之前,不能將null和undfined轉換成其他任何值

3.如有乙個運算元為nan,相等操作符返回fasle,不相等操作符返回true, nan不等於nan

4.兩個物件之間的比較,兩者指向同乙個物件(位址相同),相等操作符返回true,否則返回false

值得注意的是:物件間的》=與==(!=)比較方式是不同的,前者是tostring()返回值的比較,後者是引用位址的比較

當都是兩邊都是字串時,按字元編碼大小進行比較

當一方運算元為boolean,string,object,轉成number型別的數值再進行比較;

console.log("nan" == nan);         //false

console.log(undefined == null); //true

console.log({} >= ); //true

console.log( != {}); //true

console.log({} == ); //false

console.log([1] == [1]); //false

console.log(null == 0); //false

Javascript 隱式轉換

確定兩個變數是否相等是程式設計中的乙個非常重要的操作。在比較字串 數值和布林值的相等性時,問題還比較簡單。但在涉及到物件的比較時,問題就變得複雜了。最早的 ecmascript 中的相等和不等 操作符會在執行比較之前,先將物件轉換成相似的型別。後來,有人提出了這種轉換到底是否合理的質疑。最後,ecm...

Scala 學習筆記之隱式引數和隱式轉換並用

隱式轉換條件 1.當表示式型別與預期的型別不同時 2.當物件訪問乙個不存在的成員時 3.當物件呼叫某個方法,而該方法的引數宣告與傳入引數不相匹時。隱式轉換搜尋範圍 1.位於源火目標型別伴生物件中的隱式函式。2.位於當前作用域可以以單個識別符號指代的隱式函式。隱式引數條件 函式中引數帶有implici...

Scala隱式轉換之隱式引數 1

函式或者方法可以帶有乙個標記為implicit的引數。在這種情況下,編譯器將會查詢預設值,提供給該函式或者方法。示例 case class d left string,right string def quote title string implicit d d d.left title d.ri...