zoukankan      html  css  js  c++  java
  • 是true还是false呢?

    古来圣贤皆寂寞 惟有【努】者留其名 ---【努】原文:饮  

    先总结一个小知识点:0、null、NaN、undefined、"" 转成布尔值为false 其他则一律返回true

    1、首先明白一点:初始化后的数组,即使是空数组,也是一个object 当然非空数组肯定是一个object

      console.log(typeof [])//object
      console.log(typeof(new Array()))//object
    2、既然是对象,用于判断条件就会转成true
     if([]){
        console.log(1)//1 可以打印出来
      }
    3、但是将[]与布尔值比较却是false
      []==false //true
      Boolean([])//true
    4、但是将空数组转成Boolean却是true,既然是true 为什么[ ]==false
    接着往下看:
     Number([])//0
     0==false
    总结:这说明一个问题,当空数组与布尔值进行比较时,是将==两边先转成Number在进行比较,这样可以解释的通了
    所以,当空数组作为判断条件时,相当于true。当空数组与布尔值直接比较时,相当于false。
    6、但是还有一个理解不了的问题,看下面
     [1]==false//false ,按照上边的结论 [1] 转成Number 结果是1转成布尔值是true 没错,但是下面有个问题
       new Array(2)==false//false 也没问题
      new Array(1)==false//true 可是new Array(1)是却是true,,
     //望大神解答?
    7、接着还有一小个问题
    []==[] //false
    []==![]//true
    明明是两空数组为什么不相等呢?
    原因:是数组是有new Array() 创建出来的,两个数组即使值相等,它也是new Array()创建出来的两个实例对象,自然不会相等
    8、直接拿数值与布尔值比较
      console.log(0==true)//false
      console.log(1==true)//true
    console.log(1==false)//false console.log(
    2==true)//false console.log(2==false)//false console.log("------------------") console.log(Boolean(0))//false console.log(Boolean(2))//true console.log(Boolean(1))//true
    结论:①直接拿数值与布尔值进行比较,0是false,1是true,其他的数字直接与布尔值比较,无论比较2==false或2==true 结果都是false
       ②将数值转成布尔值只有0是false,其他都是true

  • 相关阅读:
    计算机作业(四)
    计算作业(三)衡阳汽车工程学院
    数制转换
    第十一次作业——PPT内容
    第三次作业——计算机用CMD命令关机建立文件夹
    第一次作业——PC端配置详细2017级机械设计新生杨路生
    PC端配置详细 2017级机械设计新生 刘林峰
    数制转换
    计算机基础作业 17级-车辆工程-周金霖
    计算机应用基础教程作业 车辆工程 冯大昕
  • 原文地址:https://www.cnblogs.com/shengmo/p/8666946.html
Copyright © 2011-2022 走看看