简单的js代码片段。为什么总是警惕无法理解条件执行流程
“结果为空”
按我的理解,if
块应该得到执行,因为result!=""
是true
和警觉
“结果不空”。
<script>
var result = false;
if(result != "")
alert('result is not empty')
else
alert('result is empty')
</script>
简单的js代码片段。为什么总是警惕无法理解条件执行流程
“结果为空”
按我的理解,if
块应该得到执行,因为result!=""
是true
和警觉
“结果不空”。
<script>
var result = false;
if(result != "")
alert('result is not empty')
else
alert('result is empty')
</script>
这是因为!=
做了隐式类型转换。如果你使用严格的版本,!==
,它会做你的期望。但松散版本!=
会将这两个操作数转换为数字,并且""
和false
都会转换为0
,因此"" != false
为false,因为它最终(通过一系列卷积)为0 != 0
。
此详细被布置在Abstract Equality Comparison算法在本说明书中:
我们可以从上面看到,如果我们用false
和""
展开,取出,然后:
false
到0
,并与0 != ""
""
转换为0
,然后再次启动0 != 0
false
(因为我们在做!=
,而算法是根据==
定义的)。谢谢@Crowder的详细解答。保持。感谢您的链接。 – Keerthivasan
Javascript检查truthy值。
false != ""
是假
false !== ""
是真实的,所以你可以尝试一下。
因为“”是一个虚假值。 – jalooc