首頁 >web前端 >js教程 >js隱式轉換的知識解說(附範例)

js隱式轉換的知識解說(附範例)

不言
不言原創
2018-09-20 17:04:372111瀏覽

這篇文章帶給大家的內容是關於js隱式轉換的知識講解(附範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

開胃菜

[] == ![]                  //true  ==> "" == false
123 ^ []                   //123   ==> 123 ^ 0
~{}                        //-1    ==> ~0
{} >= {1,2}                //true  ==>因为大于等于的比较,不是相等的比较,所以[object Object] >=[object Object]
[null] == ""               //true  ==> [""] == ""

值得注意的運算子:

  • #一元運算子:透過Number()轉換;其中包含*號運算符,/號運算符,都是經Number()轉換

+undefined   //NaN
  • #邏輯運算子:!等價於Boolean(),將操作數進行布林值類型轉換

  • 位元運算:~, |, &, ^;當一邊運算元為NaN時,可等價於運算元為0;

//由以下变化可以证得:
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類型

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

當一方為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"
  • 減號,則將兩邊都進行Number()處理

  • #比較運算:==, >, <, >=, >=, != 遵循規則(摘自高程3):

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({} >= {1:2});          //true
console.log({1:2} != {});          //true
console.log({} == {1:2});          //false
console.log([1] == [1]);           //false
console.log(null == 0);            //false

以上是js隱式轉換的知識解說(附範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn