一般存在四種情況,JavaScript會對變數的數據類型進行轉換。 目錄 if中的條件會被自動轉為Boolean類型 會被轉為false的數據 會被轉為true的數據 參與+運算都會被隱式的轉為字元串 會被轉為空字元串的數據 會被轉為字元串的數據 會被轉為數據類型標記的數據 參與 運算都會被隱式的轉 ...
一般存在四種情況,JavaScript會對變數的數據類型進行轉換。
目錄
* if中的條件會被自動轉為Boolean類型
* 會被轉為false的數據
* 會被轉為true的數據
* 參與+運算都會被隱式的轉為字元串
* 會被轉為空字元串的數據
* 會被轉為字元串的數據
* 會被轉為數據類型標記的數據
* 參與*運算都會被隱式的轉為數字
* 會被轉為0的數據
* 會被轉為1的數據
* 會被轉為NaN的數據
* == 運算符
* 為true的時候
* 為false的時候
if中的條件會被自動轉為Boolean類型
會被轉為false的數據
if(false) console.log(2333)
if('') console.log(2333)
if(null) console.log(2333)
if(undefined) console.log(2333)
if(NaN) console.log(2333)
會被轉為true的數據
if(true) console.log(2333) // 2333
if('test') console.log(2333) // 2333
if([]) console.log(2333) // 2333
if({}) console.log(2333) // 2333
參與+運算都會被隱式的轉為字元串
會被轉為空字元串的數據
'str-' + '' // str-
'str-' + []
會被轉為字元串的數據
'str-' + '1' // "str-1"
'str-' + 1 // "str-1"
'str-' + false // "str-false"
'str-' + true // "str-true"
'str-' + null // "str-null"
'str-' + undefined // "str-undefined"
'str-' + NaN // "str-NaN"
會被轉為數據類型標記的數據
'str-' + {} // "str-[object Object]"
'str-' + {a:1} // "str-[object Object]"
參與*運算都會被隱式的轉為數字
會被轉為0的數據
2 * '' // 0
2 * [] // 0
2 * false // 0
會被轉為1的數據
2 * '1' // 2
2 * [1] // 2
2 * true // 2
會被轉為NaN的數據
2 * {} // NaN
2 * {a:1} // NaN
== 運算符
為true的時候
0 == false // true
0 == '' // true
0 == '0' // true
0 == [] // true
0 == [0] // true
1 == true // true
1 == '1' // true
1 == [1] // true
[1] == true // true
[] == false // true
為false的時候
0 == {} // false
0 == null // false
0 == undefined // false
0 == NaN // false
1 == {} // false
1 == null // false
1 == undefined // false
1 == NaN // false
[] == [] // false
[1] == [1] // false
[1] == {} // false
[1] == {a:1} // false
[1] == false // false
[1] == null // false
[1] == undefined // false
[1] == NaN // false
{} == {} // false
{a:1} == {a:1} // false
註:空數組[],在+運算符下是轉為空字元串'',在*運算符下是轉為數字0。但在if語句中,則轉為true。
歡迎關註前端進階指南微信公眾號:
另外我也創了一個對應的QQ群:660112451,歡迎一起交流。