JavaScript運算符(隱式類型轉換)

一、運算符

1. 隱式的轉換爲字符串

var variate = ["a","b","c"];
轉換爲字符串

variate + ""

2. 隱式的轉換爲布爾類型

var variate = ["a","b","c"];
轉換爲Boolean類型

!!variate

3. 隱式的轉換爲數字

(1)一元+

在對非數值應用一元加運算符時,會調用Number()轉型函數對這個值進行轉換

var variate = "123";
轉爲數字

+variate

在new Date()前面使用一元加符號,可以把日期字符串,轉換爲日期毫秒數 

new Date()
Thu May 28 2020 15:07:16 GMT+0800 (中國標準時間)
+new Date()
1590649644859

 (2)一元-

會對該值使用Number()轉型函數進行轉換,再將得到的數值轉換成負數 

-variate

(3)自增++ 和 自減 --

會調用Number()轉型函數對這個值進行加減

4、加法運算

(1)數字進行的加法

特別注意,數字和引用值進行加法運算,其實是拼接

console.log(1 + {});//'1[object Object]'
console.log(1 + [1,2]);//'11,2'
console.log(1 + new Date());//'1Thu Jun 16 2016 10:27:13 GMT+0800 (中國標準時間)'
console.log(1 + /0/);//'1/0/'

(2)字符串進行的拼接

console.log('' + undefined);//'undefined'
console.log('' + null);//'null'
console.log('' + false);//'false'
console.log('' + true);//'true'

5、減法運算

減法運算都會進行數字運行,注意new Data()會轉換爲毫秒數

console.log(1 - {});//NaN
console.log(1 - [1,2]);//NaN
console.log(1 - /0/);//NaN
console.log(1 - []);//1

console.log(new Date() + 1);//'Thu Jun 16 2016 11:11:49 GMT+0800 (中國標準時間)1'
console.log(new Date() - 1);//1466046941641

console.log(1 - undefined);//NaN
console.log(1 - null);//1
console.log(1 - false);//1
console.log(1 - true);//0

6、乘除取餘(* / %)

都會進過Number()的轉換,轉換爲數字後進行運行。

需要注意的是:%的符號有左邊的數字決定

console.log(5 % 2);//1
console.log(5 % -2);//1
console.log(-5 % 2);//-1
console.log(-5 % -2);//-1

二、關係運算符

關係運算符用於測試兩個值之間的關係,根據關係是否存在而返回true或false,關係表達式總是返回一個布爾值,通常在if、while或for語句中使用關係表達式,用以控制程序的執行流程。

javascript提供了===、!==、==、!=、<、<=、>、>=8個關係運算符,分爲4類介紹關係運算符。

【1】=== 全等

不經過任何的類型轉換,進行值的比較。

如果是數字比較,都轉換爲10進制後進行比較

10 === 0xa    (true)

 如果是字符串,比較每一位的值

"abc" === "abc"  (true)

undefined的比較

undefined === undefined(true)

null值的比較:

null === null(true)

布爾值的比較:

true === true(true)

引用值的比較,比較的是同一地址:

var obj1 = {a:1,b:2,o:{age:24}}
undefined
var obj = obj1
undefined
obj === obj1
true
{a:1} === {a:1}
false

 注意 NaN與任何值都不相等,更不全等。

【2】== 相等

相等運算符'=='和恆等運算符相似,但相等運算符的比較並不嚴格,如果兩個操作數不是同一類型,相等運算符會嘗試進行一些類型轉換,然後再進行比較

當兩個操作數類型相同時,比較規則和恆等運算符規則相同

console.log(true == 1);//true
console.log(true == 0);//false
console.log(false == '1');//false
console.log(false == '0');//true
console.log(true == 'true');//false,相當於1 == NaN

console.log([1] == 1);//true,相當於1 == 1
console.log([1] == '1');//true,相當於'1' == '1'
console.log([] == 0);//true,相當於0 == 0
console.log([] == '0');//false,相當於'' == '0'

console.log([] == true);//false,相當於0 == 1
console.log([1] == true);//true,相當於1 == 1

console.log(new Date() == 'Sat Jun 25 2016 11:07:20 GMT+0800 (中國標準時間)');//true

[注意]如果一個值是null,另一個值是undefined,則返回true。

雖然Number(null)是0,但null和0並不相等。雖然Boolean(null)是false,但null和false也不相等。

console.log(null == undefined);//true
console.log(null == 0);//false

null == false
false

 實際上,null == null 或 undefined 外,null和其他都不相等。

參考文章:javascript —— 運算符

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章