==与===的区别
麻烦请问下,我在add方法if判断条件中,如果写的是(this.current == ''),数组的第一个元素不能被添加到target数组中,但是判断条件改成(this.current === '')就可以了。为什么会有这个问题呢?
我现在理解的,==是简单的做比较,并且在比较的时候会做字符转换,===是做强比较,一定要全等才符合条件。
麻烦请问下,我在add方法if判断条件中,如果写的是(this.current == ''),数组的第一个元素不能被添加到target数组中,但是判断条件改成(this.current === '')就可以了。为什么会有这个问题呢?
我现在理解的,==是简单的做比较,并且在比较的时候会做字符转换,===是做强比较,一定要全等才符合条件。
2019-08-05
同学,你的理解是正确的,三个等号就是强等,这个强是多了一层的判断:
var num = 0; var obj = new String("0"); var str = "0"; var b = false; console.log(num === num); // true console.log(obj === obj); // true console.log(str === str); // true console.log(num === obj); // false console.log(num === str); // false console.log(obj === str); // false console.log(null === undefined); // false console.log(obj === null); // false console.log(obj === undefined); // false
一个值只与自身全等。
一般而言,根据 ECMAScript 规范,所有的对象都与 undefined
和 null
不相等。
这一块属于Javascript基础,可以参考:JavaScript 中的相等性判断
举报