js隱式轉換

2021-10-07 20:29:53 字數 3301 閱讀 6409

js基礎資料型別:stringnumberbooleannullundefinedsymbol

當運算子在運算時,如果運算子兩邊的資料型別不一致,那麼cpu就無法進行計算。js的編輯器會自動將運算子兩邊的資料轉換為同一型別,從而讓計算機識別並可以進行計算,這一轉換過程由編譯器自動自行,不需要程式設計師手動操作,所以稱之為隱式轉換

字串轉換:字串 + 變數;所有與字串相加的基礎變數都將轉換為字串。

例如:

「」+變數 //將變數轉換為字串

number轉換:自增運算子(++,--),或者算術運算子(+,-,*,/,%),或者關係運算子(>,<,>=,<=,==,!=,===,!==) 變數

例如:

+value //將value轉換為number型別

value-「1」 //會分別將value和1轉換為number,再進行計算

boolean轉換:!變數

例如:

!value //將value轉換為boolean型別

!!value //先將value轉化為blooean,然後將value取反

undefined == null,但是undefined !== null

nan不等於任何值,包括它自身

在進行數字計算時,boolean的true=1,false=0

引用型別不能用==做比較,因為棧中存在的僅僅是引用位址

== //false

{}=={}//false

var a =,b=; cosole.log(a==b); //false

物件與基礎型別比較,會優先將物件轉換為字串再進行基礎型別比較。

== false //true

== ! //true

[1,2,3] == 『1,2,3』 //true

console.log(==『a:1』) //false

//首先會將執行number(undefined)=nan,然後執行1+nan

console.

log(

1+undefined)

;//nan

//首先執行number(null)=0,然後執行1+0

console.

log(1+

null);

//1//首先執行number(true)=1,然後執行1+1

console.

log(1+

true);

//2//與字串相+時,+不再是數**算符,而是字串連線符,所以所有值都是字串拼接

//首先執行string(1)="1",然後執行"1"+"true"

console.

log(1+

"true");

//"1true"

//當與數字進行關係比較時,會將其他型別優先轉換為數字型別,再比較

//首先執行number("2")=2,然後執行3>2

console.

log(

3>

"2")

;//true

//字串與字串的比較並非直接轉換為數字,而是比較unicode編碼的值

//首先執行2.charcodeat()=50,10.charcodeat()=49,然後執行50>49

console.

log(

"2">

"10");

//true

//多個字元之間的字串比較,從左向右,一詞對每個字元進行比較,直到出結果為止

/* 首先對左右兩邊的第乙個字元a,進行比較,相等

其次對左右兩邊的第二個字元b,進行比較,相等

最後比較"c".charcodeat()>"d".charcodeat()

*/console.

log(

"abc"

>

"abd");

//false;

引用型別之間不能直接進行比較,因為他們棧中僅僅儲存了引用位址。

引用型別和基礎型別比較,則會先將引用型別轉換為字串,再參照基礎型別比較規則。

引用型別轉換為字串的方式為:引用變數.valueof().tostring()

valueof():強制轉換方法,用於獲取引用變數的原始值。同時物件的該方法可以被重寫覆蓋。

例如:

var b = 

}

每呼叫一次b物件的valueof(),其b.i將+1。

//引用型別之間的比較僅僅是引用位址的比較

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

console.log(==); //false

//引用型別和基礎型別的比較

//首先執行.valueof()="",其次執行number("")=0,最後執行0==0

console.log(==0); //true

//這裡!優先順序高於==,所以不用進行valueof().tostring()

//首先執行!=false,其次執行number(false)=0,最後執行0==0

console.log(!==0); //true

//同上理

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

//首先執行!{}=false,其次{}==false

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

//首先轉化a.valueof().tostring()="[object object]",其次number("[object object]")=nan,最後nan == false

var a = {};

console.log(a == false); //false

需注意:

js 隱式轉換

1.數字number與字串string相加的就,最後會得到乙個字串string 1 3 13 2.數字number與字串string相減,最後會得到乙個數字number 1 0 1,s 0 nan 3.數字number與字串string相乘 最後會得到乙個數字number 1 10 10,s 10 ...

js 隱式轉換

其它型別轉換成布林型別 1.未聲名的變數名 undefined false 2.變數名為 null 為空 null false 3.number 0 0.0 0 0 nan false 4.空字串 false 5.其它物件 true 1 其它型別轉換為數值型 number 1.undefined n...

js隱式型別轉換

筆試題 var x 1 if function console.log x 1undefined解析 if function f function f 作為表示式,function f消失,所以在if裡面,f為未宣告 任何乙個變數,未經宣告使用都會報錯。但是,typeof其時,不會報錯,而是unde...