比如下題:
console.
log(
["0"]==
[0])
;// false
console.
log(![
"0"]==!
[0])
;// true
console.
log(
["0"]+
0==[0
]+0)
;// true
結果我們看到了,那我們今天就得好好說道說道各種運算子帶來的隱式資料型別轉換
隱式型別轉換
隱式資料型別轉換,也就是說這個轉換過程不受我們強制 js 偷偷自己轉的.
如 10 - 「5」結果為 5。按照道理數字和字串是不能直接運算的。但是這裡使用減號的時候,減號就偷偷的把兩邊的資料都轉換為數字然後進行運算,這個就是隱式型別轉換
知道了隱式型別轉換之後 我們來看看各種運算子帶來的隱式型別轉換
數**算符的計算規則
-減,* 乘,/ 除,% 取模,-= 減等,*= 乘等,/= 除等,%= 模等,-- 自減,++ 自增,+ 正,- 負
這些運算子只能進行數**算,所以在計算的時候,會先進行資料轉換,如果計算的值不是數字,則先轉成數字之後再進行運算,這個轉換過程 和 number() 的轉換規則一致,大家也可以理解為這些運算子幫我們呼叫 number() 方法把兩側資料都轉換成數字之後再進行運算
var a = true;
console.
log(
++a)
;//2
/* a 本身是乙個布林值,但是自增計算的時候,就先把 a 轉成了數字 1
然後 ++ 結果就是 2 */
+加,+= 加等
這兩個運算在 js 中稍微有些特殊他們不只可以進行加法運算,也可用於字串連線,具體規則如下:
邏輯運算子的計算規則
|| 或 運算子規則
&& 與 運算子規則
! 非 運算子規則
! 運算子在處理資料時,如果不是布林值會直接呼叫 boolean()方法進行轉換,轉換完之後,再進行計算
關係運算子的計算規則
> 大於, < 小於, >= 大於等於, <= 小於等於
== 等等 和 != 不等
=== 全等 和 !== 全不等
資料型別及轉換
原始值 number string boolean null undefined 引用值 object array object function date regexp 正規表示式 原始值和引用值區別 原始型別變數,存放的是具體的值,即修改變數a的值,不會影響變數b的值。var a 5 var b...
資料型別及轉換
number 整數,浮點數,nan 0 預設值 number typeof型別 string 任何加了引號的都是字串 string boolean 布林值false boolean undefined 宣告了變數,但是沒有賦值 undefined undefined null 宣告變數為空值 nul...
資料型別及轉換
資料型別 內建 引用 八種基本型別 6 1 1 6種數字型別,1種字元型,1種布林型 1 byte 8位1位元組,128 127,2 int 32位4位元組 最小值是 2,147,483,648 2 31 最大值是 2,147,483,647 2 31 1 3 long 64位8位元組,最小值是 9...