一、運算符
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 —— 運算符