墨笙弘一 2016-09-01 15:45 采纳率: 100%
浏览 1029
已采纳

javascript代码执行结果分析

 <script>
            //var falseObject = new Boolean(false);
            var falseObject = new Boolean(true);
            alert(falseObject);
            var result = falseObject&&true;
            alert(result);//true

            var falseValue = false;
            result = falseValue&&true;
            alert(result);
        </script>

当使用Boolean类型的构造函数传入值,第一个alert会根据你传递的参数来反应,为什么
无论falseObject是什么值,第二个alert()都为true,顺便讲讲第二个代码

  • 写回答

2条回答 默认 最新

  • qq_3526022 2016-09-02 00:46
    关注

    可以用typeof查看一下其数据类型:alert(typeof falseObject); //object

    不过在这行代码中,计算的是falseObject(引用类型_存储的是指向其值false的地址),而不是它的值false.

    在Boolean表达式中,所有对象都会转换为true所以,在进行Boolean运算中,falseObject的值为true .true && true,结果当然也是为true.

    例子:
     var b = new Boolean(false);
      b 是 Boolean 对象实例,它的值是 false。但要注意的是,如果判断条件“b && true”,结果却为“true”,原因是此处是用对象 b 作为条件的,而不是 b 的值,由于在条件表达式中任何对象都自动转换为“true”,所以产生了不易理解的结果。
      在实际应用中,很少使用 Boolean 对象,通常使用的是 Boolean 原始值,这样可避免上面问题的发生。比如:
      var b = false;
      本例的 b 是一个 Boolean 类型的变量,它是原始值,不是 Boolean 对象。
      不论是 Boolean 对象还是 Boolean 原始类型,都可以引用 Boolean 对象的属性和方法。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 ARCGIS 多值提取到点 ERROR 999999
  • ¥15 mysql异常断电, [MY-011971] [InnoDB]
  • ¥15 uni.onBluetoothDeviceFound熄屏不运行
  • ¥35 关于shodan搜索网络摄像头的各种方法详解
  • ¥15 求PHDA糖尿病并发症数据集,有偿
  • ¥15 为什么AVL fire DVI 界面里面的response Editor project 中的Summary result 点不了
  • ¥20 中标麒麟系统V4.0,linux3.10.0的内核,3A4000处理器,如何安装英伟达或AMD的显卡驱动,
  • ¥20 求文心中文心理分析系统(TextMind)
  • ¥15 chipyard环境搭建问题
  • ¥15 python,pyopenGL的OBV渲染无法设置透明