如果我的代码看起来像是===
var a = (b === null) ? "" : 888;
那么这就像将变量名放在()?
中一样var a = (b) ? "" : 888;
答案 0 :(得分:4)
b === null
将检查b
是否具有相同类型,在您的情况null
中,只需检查(b)
即会检查undefined
,{{1} },Boolean
,Int
和null
值。
答案 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)