js 引起的隱式轉換

2021-08-18 12:24:01 字數 2107 閱讀 6271

var undefined;

undefined == null; // true

1 == true; // true

2 == true; // false

0 == false; // true

0 == ' '; // true

nan == nan; // false

== false; // true

== !; // true

// alert(!!) //true

// alert(!) //false

// alert( == 0) //true

// alert(false == 0) //true

分析:undefined與null相等 但不全等(===)

當為number與string時,會將string轉換為number;

number和boolean時,會將boolean轉換為number

number或string與object,會將object轉換成number或string

總之就是:

一、首先看雙等號前後有沒有nan,如果存在nan,一律返回false。

二、再看雙等號前後有沒有布林,有布林就將布林轉換為數字。(false是0,true是1)

三、接著看雙等號前後有沒有字串, 有三種情況:

1、對方是物件,物件使用tostring()或者valueof()進行轉換;

2、對方是數字,字串轉數字;(前面已經舉例)

3、對方是字串,直接比較;

4、其他返回false

四、如果是數字,對方是物件,物件取valueof()或者tostring()進行比較, 其他一律返回false

五、null, undefined不會進行型別轉換, 但它們倆相等

vara;

console

.dir(0

==false

);//true

console

.dir(1

==true

);//true

console

.dir(2

==});

//true

console

.dir(a

==nan

);//false

console

.dir

(nan

==nan

);//false

console

.dir(8

==undefined

);//false

console

.dir(1

==undefined

);//false

console

.dir(2

==});

//true

console

.dir

(undefined

==null

);//true

console

.dir

(null==1

);//false

console

.dir(,

valueof

:function

()}==1);

//true

console

.dir(1

=="1"

);//true

console

.dir(1

==="1"

);//false

(附:js中的資料型別轉換?)

函式轉換:parseint()、parsefloat()、tostring()

強型別轉換:boolean()、number()、string()

弱型別轉換:「==」、「-」、「+」、if()

(拓展:for迴圈中的效率問題?)

1.for(var i=0;i2.for(var i in arr)

3.for(var i=0,len=arr.length;i第三種效率更高!

在大資料下:

第三種方式比第一種執行速度快3~4倍;

至於第三種比第三種快100多倍開外

mysql 隱式轉換引起的bug

提問 乙個粗心,括號不小心打錯了地方,猜猜會是什麼執行結果?t 表order no為varchar型別。select from t where order no in u123 u234 and type in 10,11 語法錯誤?row 0?答案 實際情況是,這句sql並沒有語法錯誤,而是將全部...

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隱式轉換

js基礎資料型別 string number boolean null undefined symbol 當運算子在運算時,如果運算子兩邊的資料型別不一致,那麼cpu就無法進行計算。js的編輯器會自動將運算子兩邊的資料轉換為同一型別,從而讓計算機識別並可以進行計算,這一轉換過程由編譯器自動自行,不需...