与obj != null;不同
我知道,obj != null将检测到允许在其上具有属性的任何内容为null,而未定义的值是唯一不能具有属性的两个值。
这与
Object(obj) === obj;
发布于 2014-06-27 21:28:00
Object(obj) === obj测试obj是对象还是原语,对于字符串也失败,等等。
console.log(Object('foo') === 'foo'); // false
console.log(Object(true) === true); // false
console.log(Object(null) === null); // false
var obj = {};
console.log(Object(obj) === obj); // true它对于确定该值是否可以给出并记住指定的属性很有用。
而null和undefined在尝试使用属性时完全出错,这就是为什么obj != null仍然有用的原因,没有原始值能够保存属性。。
var pri = 'foo';
pri.foo = 'bar'; // no error, but still...
console.log(pri.foo); // undefined
var box = Object(pri);
box.foo = 'bar';
console.log(box.foo); // 'bar'参考资料:
当obj是null或undefined时,new Object()
1)如果值为
null、undefined或未提供,则创建和返回一个新的对象对象,就像使用相同的参数(15.2.2.1)调用标准内置对象构造函数一样。
并且,通过ToObject()将原始布尔、字符串和数字装箱到它们的对象类型中,这些对象类型并不等于它们的原语等价物:
2)返回ToObject(值)。
console.log(typeof 'foo' === 'string'); // true
console.log(typeof Object('foo') === 'object'); // true
console.log('foo' instanceof String); // false
console.log(Object('foo') instanceof String); // true发布于 2014-06-27 21:19:58
身份(===. )!==)
这些运算符的行为与相等的运算符相同,除非没有进行类型转换,而且类型必须相同才能被视为相等。
教程/jsgrpcompison.htm
漂亮的堆栈溢出链接哪一个等于运算符(==和===)应该用于JavaScript比较?
希望它能帮上忙
https://stackoverflow.com/questions/24460874
复制相似问题