kma*_*man 7 javascript boolean
有人可以向我解释为什么这会返回一个空字符串("")而不是一个布尔值(false)?
var x = "";
alert(x && x.length > 0);
Run Code Online (Sandbox Code Playgroud)
...虽然这按预期工作,但返回true:
var y = "abc";
alert(y && y.length > 0);
Run Code Online (Sandbox Code Playgroud)
我基本上只是尝试做一个简单的速记检查,以查看变量中是否存在值(确保它不是未定义,null或空字符串).
我知道我可以单独进行每个测试(x == null,typeof x =='undefined',x =='') - 我只是想了解为什么Javascript会返回一个看起来像布尔测试的字符串.
当满足JavaScript中的条件运算符时,它返回最后计算的值.
var x = "";
alert(x && x.length > 0);
Run Code Online (Sandbox Code Playgroud)
空字符串是假的,因此当您x在条件中使用时,它将为false.因为你正在使用&&,如果LHS是假的,那么没有理由去检查RHS.这是短路评估.因此,返回最后一个评估的部分,即空字符串alert().
var y = "abc";
alert(y && y.length > 0);
Run Code Online (Sandbox Code Playgroud)
非空字符串是真实的.所以LHS是真的,因为它是一个&&,RHS被评估(它需要知道整个条件是否为真).返回值y.length > 0是true,所以传递给你的alert().
| 归档时间: |
|
| 查看次数: |
262 次 |
| 最近记录: |