• 是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

  • 相关阅读:
    工作中收集的工具类函数库
    前端常用应用网站
    angularJs select ng-selected默认选中遇到的坑
    超好用的input模糊搜索 jq模糊搜索,
    angular,,以及深度拷贝问题;JSON.parse,JSON.stringify灵活运用
    vue-router解析,vue-router原理解析
    共享一个PowerDesigner 16.5
    在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。
    C#的Class的几个修饰符
    IntelliTrace调试
  • 原文地址:https://www.cnblogs.com/shengmo/p/8666946.html
Copyright © 2020-2023  润新知