墨笙弘一 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 对象的属性和方法。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • 墨笙弘一 Java领域优质创作者 2016-09-02 06:41
    关注

    谢谢,昨晚看书看到那里就迷糊了,看你讲解,感觉一下子明白了

    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 PMM 9010/30P
  • ¥15 pom文件依赖管理,未找到依赖
  • ¥15 现在后端返回给我一堆下载地址,都是一个视频切片后的,如何在uniapp安卓环境下将这些分片的视频下周并且合并成原始视频并下载到本地。
  • ¥15 Unity导出2D项目运行时图片变成马赛克
  • ¥15 关于communitytoolkit.mvvm的生成器得到的代码看起来没有被使用的问题
  • ¥15 matlab中此类型的变量不支持使用点进行索引
  • ¥15 咨询第六届工业互联网数据创新大赛原始数据
  • ¥15 Pycharm无法自动补全,识别第三方库函数接收的参数!
  • ¥15 STM32U575 pwm和DMA输出的波形少一段
  • ¥30 android百度地图SDK海量点显示标题