有两种用于调查空/完整变量的JavaScript代码:
if(variable == ''){}
if(!variable){}
我测试了它们,我取得了相同的结果。现在我想知道,(首先)它们是否相同?并且(第二)哪一个更适合检查空/满变量?
var variable1 = 'string';
var variable2 = 12;
var variable3 = true;
if(variable1 == ''){alert('empty-one');}
if(variable2 == ''){alert('empty-one');}
if(variable3 == ''){alert('empty-one');}
if(!variable1){alert('empty-two');}
if(!variable2){alert('empty-two');}
if(!variable3){alert('empty-two');}
如您所见,没有alert
。
答案 0 :(得分:3)
在javascript null,'',0,NaN,undefined
中,在javascript中考虑 falsey 。
从某种意义上说,你可以双向检查空白
但是您的第一个代码是''
你的第二个条件是检查你的价值是(null,'',0,NaN,undefined)
在我看来,你的第二个条件比第一个更好,因为我不必单独检查null,'',0,NaN,undefined
答案 1 :(得分:3)
首先不是标准的,它只适用于定义的空字符串。
如果价值不是真实的(意味着有意义的话),那么其他将起作用
例如var a;
a == '' will give false result
! a will produce true
e.g。 var a = null;
a == '', // false
! a // true
var a = false;
a == '' // fase
! a // true
var a = NaN
a == '' // false
! NaN // true
true == 'true' // false, Boolean true is first converted to number and then compared
0 == '' // true, string is first converted to integer and then compared
==
使用The Abstract Equality Comparison Algorithm
来比较两个操作数
有关详细信息,请访问http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.3
答案 2 :(得分:1)
不,他们不相同。如果首先它检查variable
的值是否等于空字符串('')。因此,如果variable
的值为''
,则情况首先为真。但对于所有虚假的值,即 false, 0, '', null, undefined
,第二种情况都是正确的。