博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javaScript真值和假值以及相等操作符
阅读量:7010 次
发布时间:2019-06-28

本文共 1003 字,大约阅读时间需要 3 分钟。

真值和假值

undefined       false

null            false

布尔值           true是true,false是false

数字             +0、-0和NaN都是false,其他都是true

字符串           如果字符串是空的(长度是0)就是false,其他都是true

对象             true

    

相等操作符(==和===)

下面分析一下不同类型的值用相等操作符(==)比较后的结果

类型x                                类型y                                 结果

null                                 undefined                             true

undefined                            null                                  true

数字                                 字符串                                 x == toNumber(y)

字符串                               数字                                   toNumber(x) == y

布尔值                               任何类型                                toNumber(x) == y

任何类型                              布尔值                                 x == toNumber(y)

字符串或数字                          对象                                  x == toPrimitive(y)

对象                                 字符串或数字                          toPrimitive(x) == y

toNumber 对不同 类型返回的结果如下:

值类型                                                      结果

undefined        NaN

null             0

布尔值           如果是true,返回1;如果是false,返回0

数字             数字对应的值

字符串           将字符串解析成数字。如果字符串中包含字母,返回NaN;如果是数字字符组成的,转换成数字

对象             Number(toPrimitive(vale))

toPrimitive 对不同类型返回的结果如下:

值类型                                       结果

对象   如果对象的valueof方法的结果是原始值,返回原始值;如果对象的toString方法返回原始值,就返回这个值;别的情况下返回的将是一个错误复制代码

===操作符。如果比较的两个值的类型相同,结果就如下;如果比较的两个值类型不同,返回的就是false

类型(x)                                     值                                   结果

数字                            x和y数值相等(但不是NaN)                           true

字符串                          x和y是相等的字符                                   true

布尔值                          x和y都是true或false                                true

对象                            x和y引用同一个对象                                 true

下面的例子会让你深入骨髓的理解(夸张夸张)

console.log('Mark' === true);           //false

console.log('Mark' === 'Mark')        //true

var name1 = {name:'Mark'};

var name2 = {name:'Mark'};

console.log(name1 === name2);           //true

转载地址:http://awxtl.baihongyu.com/

你可能感兴趣的文章
T-SQL动态查询(4)——动态SQL
查看>>
Ubuntu 16.04安装uGet替代迅雷,并在Chrome中设置为默认下载器
查看>>
MySQL缓存之Qcache与buffer pool对比
查看>>
springmvc(一) springmvc框架原理分析和简单入门程序
查看>>
别踩白块儿
查看>>
跟面试官讲Binder(零)
查看>>
mahout in Action2.2-聚类介绍-K-means聚类算法
查看>>
bootstrap-treeview 如何实现全选父节点下所有子节点及反选
查看>>
HTML5 CSS3 诱人的实例: 3D立方体旋转动画
查看>>
ElasticSearchserver操作命令
查看>>
ThreadPoolExecutor异常处理
查看>>
LeetCode 第 342 题(Power of Four)
查看>>
用QT搭建简单的播放器外壳
查看>>
索引设计指南
查看>>
Timus Online Judge 1057. Amount of Degrees(数位dp)
查看>>
jquery中关于表格行的增删问题
查看>>
分布式事务,EventBus 解决方案:CAP【中文文档】
查看>>
GUI进化--数据与界面分离
查看>>
三级菜单实例
查看>>
Teleport Pro使用教程
查看>>