javascript基礎:等號比較

包括==與===運算符,前者爲寬鬆判斷相等,若是二者類型不一樣前面的比較值將進行類型轉換,後者爲徹底相等斷定。數組

一、數字、字符串和布爾值經過值比較函數

==與===檢測先後二者是否相同,只當它們存放的值徹底相同時才相等。對象

var a = 'a';
var b = 'a';
console.log(a==b,a===b);字符串

true trueconsole

var a = String('a');
var b = String('a');
console.log(a==b,a===b);object

true true引用

js中的數字都爲浮點數,不存在整型轉爲浮點型的問題方法

var a = 1;
var b = 1.0;
console.log(a==b,a===b);類型轉換

true trueco

var a = 1;
var b = true;
console.log(a==b,a===b); // ==前面的a進行類型轉換,轉爲布爾值

true false

二、對象、數組和函數之間使用引用比較。

數組和函數是對象的特殊形式。

若是對象的存放地址不一樣,如何都不相等。

var a = [2,3];
var b = [2,3];
console.log(a==b,a===b);

false false

var a = [2,3];
var b = a;
console.log(a==b,a===b);

true true

三、特殊的NaN

NaN與任何數值、對象比較都不相等,包括它自身。

var a = 2;
var b = 0/0;
console.log(b,a==b,a===b,b==NaN);

NaN false false false

四、null與undefined的比較

這兩個基本類型的比較與數字、字符串的比較是同樣的。

var a = null;
var b = undefined;
var d;
console.log(d,a==b,a===b,b===d,d===undefined);

undefined true false true true

五、對象與字符串比較

js內部會將對象轉換成原始類型的值進行比較,一般先嚐試valueOf方法,再嘗試toString轉換。

var a = '[object Object]';
var b = {};
console.log(a==b,b.toString());

true [object Object]

惟一例外的是js中的核心對象Date,它直接使用toString()方法轉換。

var a = new Date(2016,04,15);
var b = 1463241600000;
var c = 'Sun May 15 2016 00:00:00 GMT+0800';
console.log(a==b,a==c,a.valueOf(),a.toString());

false true 1463241600000 Sun May 15 2016 00:00:00 GMT+0800

相關文章
相關標籤/搜索