(b === null)是否与just(b)相同?

时间:2014-01-30 13:10:21

标签: javascript

如果我的代码看起来像是===

的测试
var a = (b === null) ? "" : 888;

那么这就像将变量名放在()?

中一样
var a = (b) ? "" : 888;

4 个答案:

答案 0 :(得分:4)

b === null将检查b是否具有相同类型,在您的情况null中,只需检查(b)即会检查undefined,{{1} },BooleanIntnull值。

答案 1 :(得分:1)

在javascript中我们可以轻松地将所有类型的值转换为布尔值,只需将它们用作布尔值,并且有一些值表示false值,如:

null
""
undefined
0
false

另一点是,==比较对象的值并与valueOf()个对象一起使用, 但===比较对象实例。

例如:

var MyClass = function(){};
MyClass.prototype.valueOf = function(){return 12;};
var obj = new MyClass();
console.log(obj==12);//result is true

BUT

console.log(obj===12);//result is false

重点是将对象与null进行比较,如:

obj === null

它会将它们比作2个不同的对象,但如果你这样做:

obj == null; //better way to check the value

它会比较值:

var myobj = undefined;
console.log(myobj==null);//result is true

但如果你真的想要一个布尔值,你可以这样做,而不是所有这些代码行:

obj = !!obj;//this is something like a toBoolean method.

答案 2 :(得分:1)

基本上==只需比较两个变量值,如果需要,它会隐含地转换数据类型。

而===会将两个变量值与其数据类型进行比较。

考虑这个简单的例子,

0==false   // true
0===false  // false, because they are of a different type
1=="1"     // true, auto type coercion
1==="1"    // false, because they are of a different type

这就是==和===工作的方式。

答案 3 :(得分:0)

不,它不一样。

===表示严格相等,左手边和右手边需要在类型和值上相等。

使用if (a)构造,a被检查为真或假。虚假值例如是“”(字符串),0(数字),未定义和空。

if (a)if (a !== null && a !== undefined && a !== "" && a !== 0)

几乎相同