在JavaScript中“==”和“===”分别有什么作用?
“==”是等同,相等;而“===”是恒等于。
“==”两边值类型不相等时,需要先进行类型转换,然后进行比较。
“===”,不作类型比较,类型不同一定不同。
怎样判断“===”什么时候为true,也就是什么时候恒等于。
- 类型不同,不相等。
- 如果两个值都是数值,并且是同一个值,相等。
- 如果两个值都是字符串,每个位置的字符都一样,相等。
- 如果两个值都是true或者false,相等。
- 如果两个值都引用同一个对象或函数,相等。
- 如果两个值都是null,或者都是undefined,相等。
怎样判断“==”什么时候为true?
- 如果两个值的类型相等,则根据“===”的条件来判断。
- 如果两个值的类型不相等,他们也可能相等:
a:如果一个是null,一个是undefined,相等;
b:如果一个是字符串,一个是数值,把他的字符串转换为数组后在比较。
c:如果任一值是true,把它转换为1在比较;如果任一值是false,把它转换为0再比较。
d:如果一个是对象,另一个是数值或字符串,把对象转换成基础类型的值再比较。(使用toString()和valueOf()转换)
var a = 1;
var b = true;
console.log(a===b);
console.log(a==b);
var c = null instanceof Object;
var d = 0;
console.log(c===d);
console.log(c==d);