javascript基础:等号比较

包括==与===运算符,前者为宽松判断相等,如果两者类型不同前面的比较值将进行类型转换,后者为完全相等判定。

1、数字、字符串和布尔值通过值比较

==与===检测前后两者是否相同,只当它们存放的值完全相同时才相等。

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

true true

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

true true

js中的数字都为浮点数,不存在整型转为浮点型的问题

var a = 1;
var b = 1.0;
console.log(a==b,a===b);

true true

var a = 1;
var b = true;
console.log(a==b,a===b); // ==前面的a进行类型转换,转为布尔值

true false

2、对象、数组和函数之间使用引用比较。

数组和函数是对象的特殊形式。

如果对象的存放地址不同,如何都不相等。

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

3、特殊的NaN

NaN与任何数值、对象比较都不相等,包括它自身。

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

NaN false false false

4、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

5、对象与字符串比较

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

posted @ 2016-02-13 17:18  sumsung753  阅读(188)  评论(0编辑  收藏  举报