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

来源:互联网 发布:怎么查看网络是否稳定 编辑:程序博客网 时间:2024/06/05 20:11

在《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>

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

这里写图片描述

原创粉丝点击