if 判断和 == 判断

if(xx) 判断

什么是 if(xx) 判断?

所谓的 if(xx) 判断,即是对括号中的 xx 或者说表达式通过布尔值判断结果。当然也有不是布尔值的时候,这时就会将表达式强制转换为布尔值之后进行判断。

原理

类型 结果
Undefined false
Null false
Boolean 直接判断
Number +0,-0或者 NaN 为 false,其他为 true
String 空字符串为 false,其他为 true
Object true

a==b 判断

a==b 判断的两个规则

  • 如果两个值类型相同,则执行严格相等的运算;
  • 如果两个值类型不同:
    (1)如果一个是 null,一个是 undefined,则二者相等;
    (2)如果一个是数字,一个是字符串,则将字符串转换成数字后再比较;
    (3)如果一个值是 true/false,则将其转换为1/0比较;
    (4)如果一个值是对象,一个是数字或字符串,则尝试使用 .valueOf 和 .toString 转换后比较;
    (5)其他的就都不相等了。

原理

x y 结果
Null Undefined true
Number String x == toNumber(y)
Boolean (any) toNumber(x) == y
Object String or Number toPrimitive(x) == y
otherwise otherwise false

toNumber

type result
Undefined NaN
Null 0
Boolean true -> 1,false -> 0
String "abc" -> NaN,"123" -> 123

toPrimitive

对于 Object 类型,先尝试调用 .valueOf 方法获取结果,如果没有定义,再尝试调用 .toString 方法获取结果。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,199评论 0 13
  • 初学js时,发现if()中判断的结果和==的判断结果竟然不太一样诶,真的是非常地有猫病了。下面根据js的6中数据类...
    Coding破耳阅读 370评论 0 0
  • 1.if判断 在js中,if括号里的表达式,会被强制转换为布尔类型 那么,什么情况下表达式会被判断为真,什么情况下...
    yhldqt阅读 287评论 0 0
  • 第3章 基本概念 3.1 语法 3.2 关键字和保留字 3.3 变量 3.4 数据类型 5种简单数据类型:Unde...
    RickCole阅读 5,162评论 0 21
  • 今天分享的书是《每天最重要的两小时》本书中文版大约7万字,我将分为三篇读书笔记和大家分享这本书的精髓:如何成为高效...
    步履如菲阅读 657评论 0 52