Javascript返回字符串应该是一个简写布尔测试

前端之家收集整理的这篇文章主要介绍了Javascript返回字符串应该是一个简写布尔测试前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有人可以向我解释为什么这会返回一个空字符串(“”)而不是一个布尔值(false)?
var x = "";
alert(x && x.length > 0);

…虽然这按预期工作,但返回true:

var y = "abc";
alert(y && y.length > 0);

我基本上只是尝试做一个简单的速记检查,看一个变量中是否存在一个值(确保它不是未定义的,null或空字符串).

我知道我可以单独进行每个测试(x == null,typeof x ==’undefined’,x ==”) – 我只是想了解为什么Javascript会返回一个看似布尔测试的字符串.

解决方法

当满足JavaScript中的条件运算符时,它返回最后计算的值.
var x = "";
alert(x && x.length > 0);

空字符串是假的,因此当您在条件中仅使用x时,它将为false.因为你正在使用&&,如果LHS是假的,那么没有理由去检查RHS.这是short circuit evaluation.因此,最后一个评估的部分,即空字符串,将返回到alert().

var y = "abc";
alert(y && y.length > 0);

非空字符串是真实的.因此LHS是正确的,因为它是&&,所以评估RHS(它需要知道整个条件是否为真). y.length的返回值> 0为真,因此传递给alert().

原文链接:https://www.f2er.com/js/158162.html

猜你在找的JavaScript相关文章