墨笙弘一 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条)

报告相同问题?

悬赏问题

  • ¥30 Matlab打开默认名称带有/的光谱数据
  • ¥50 easyExcel模板 动态单元格合并列
  • ¥15 res.rows如何取值使用
  • ¥15 在odoo17开发环境中,怎么实现库存管理系统,或独立模块设计与AGV小车对接?开发方面应如何设计和开发?请详细解释MES或WMS在与AGV小车对接时需完成的设计和开发
  • ¥15 CSP算法实现EEG特征提取,哪一步错了?
  • ¥15 游戏盾如何溯源服务器真实ip?需要30个字。后面的字是凑数的
  • ¥15 vue3前端取消收藏的不会引用collectId
  • ¥15 delphi7 HMAC_SHA256方式加密
  • ¥15 关于#qt#的问题:我想实现qcustomplot完成坐标轴
  • ¥15 下列c语言代码为何输出了多余的空格