javascript中的数值转换与逻辑非的比较

在《javascript高级程序设计》中的第三章中分别讲到:数值转换 与 逻辑非。
书中是这样讲的:

  • 如果操作数是一个对象,返回 false;
  • 如果操作数是一个空字符串,返回true;
  • 如果操作数是一个非空字符串,返回false;
  • 如果操作数是数值0,返回true;
  • 如果操作数是任意非0数值,返回false;
  • 如果操作数是null,返回true;
  • 如果操作数是NaN,返回true;
  • 如果操作数是undefined,返回true;

逻辑非操作符也可以用于将一个值转换为与其对应的布尔值,而同时使用两个逻辑非操作符,实际上就会模拟Boolean()转型函数的行为,其中,第一个逻辑非操作会基于无论什么操作数返回一个布尔值,而第二个逻辑非操作则对该布尔值求反,于是就得到了这个值真正对应的布尔值。在《javascript高级程序设计》一书中,举出了一个例子:

    alert(!!"blue");       返回值:true
    alert(!!0);            返回值:false
    alert(!!NaN);          返回值:false
    alert(!!"");           返回值:false
    alert(!!12345);        返回值:true

我在如果同时使用三个逻辑非呢?,为了验证这个问题,我尝试了一下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <script type="text/javascript">
        document.write(!!!"blue");
        document.write("<br>");
        document.write(!!!0);
        document.write("<br>");
        document.write(!!!NaN);
        document.write("<br>");
        document.write(!!!"");
        document.write("<br>");
        document.write(!!!12345);
    </script>

</body>
</html>

得出的结果刚好与上文相反:

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值