• 浅谈 var bool= false 和 var bool= new Boolean(false)的区别


    最近刷到一道题,发现自己基础还是不行,以后也要加强基础知识的巩固

    var x = new Boolean(false);
    if (x) {
      alert('hi');
    }
    var y = Boolean(0);
    if (y) {
      alert('hello'); 
    }
    //的显示结果是?
    

    这道题我们往往容易忽略if(x),这里期望 x 是一个布尔类型的原始值,而 在这道题中 x 是一个对象,任何对象转为布尔值,都为得到 true(切记!在 JS 中,只有 0,-0,NaN,"",null,undefined 这六个值转布尔值时,结果为 false)

    一定要注意 y = Boolean(0),而不是 y = new Boolean(0)。这两个有很大区别,用 new 调用构造函数会新建一个布尔对象,此处没有加 new,进行的是显示类型转换,正如上述第一条所说,0 转换布尔,结果为 false,所以此时 y 的值就是 false。如果加了 new,那么 y 就是一个 Boolean 类型的对象,执行 if(y) 时,对象转布尔,始终是 true,所以结果会与不加 new 的时候相反

    所以本题的答案就是hi

  • 相关阅读:
    E: 无法获得锁 /var/lib/dpkg/lock-frontend
    Ubuntu 18.04 更换apt源
    ubuntu18.04
    小a与“204”------数列、排序
    星际穿越
    合唱团---DP
    分苹果---暴力
    地牢逃脱----DFS搜索最优解
    下厨房---map/字符串查询
    hdu 2654 Be a hero
  • 原文地址:https://www.cnblogs.com/yujiao-99/p/12656692.html
Copyright © 2020-2023  润新知