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

  • 相关阅读:
    Lua脚本语法说明(修订)
    C++ 程序文档生成器介绍(doxygen)
    [转]最快速度找到内存泄漏
    MyEclipse 8.5下安装tomcat插件
    Linux解压rar文件(unrar安装和使用,分卷解压)
    禁止root用户远程登录或者禁止其他用户登录而不删除它
    linux配置IP的方法
    log4j xml配置详解
    Sqlldr使用介绍
    Linux查看CPU和内存使用情况
  • 原文地址:https://www.cnblogs.com/shengmo/p/8666946.html
Copyright © 2011-2022 走看看