JS比较运算符及null和Undefined区别
来源:互联网 发布:stc89c51rc单片机简介 编辑:程序博客网 时间:2024/06/06 14:24
比较运算符
当我们对Number做比较时,可以通过比较运算符得到一个布尔值:
2 > 5; // false5 >= 2; // true7 == 7; // true
实际上,JavaScript允许对任意数据类型做比较:
false == 0; // truefalse === 0; // false
要特别注意相等运算符==
。JavaScript在设计时,有两种比较运算符:
第一种是==
比较,它会自动转换数据类型再比较,很多时候,会得到非常诡异的结果;
第二种是===
比较,它不会自动转换数据类型,如果数据类型不一致,返回false
,如果一致,再比较。
由于JavaScript这个设计缺陷,不要使用==
比较,始终坚持使用===
比较。
另一个例外是NaN
这个特殊的Number与所有其他值都不相等,包括它自己:
NaN === NaN; // false
唯一能判断NaN
的方法是通过isNaN()
函数:
isNaN(NaN); // true
最后要注意浮点数的相等比较:
1 / 3 === (1 - 2 / 3); // false
这不是JavaScript的设计缺陷。浮点数在运算过程中会产生误差,因为计算机无法精确表示无限循环小数。要比较两个浮点数是否相等,只能计算它们之差的绝对值,看是否小于某个阈值:
Math.abs(1 / 3 - (1 - 2 / 3)) < 0.0000001; // true
null和undefined
null
表示一个“空”的值,它和0
以及空字符串''
不同,0
是一个数值,''
表示长度为0的字符串,而null
表示“空”。
在其他语言中,也有类似JavaScript的null
的表示,例如Java也用null
,Swift用nil
,Python用None
表示。但是,在JavaScript中,还有一个和null
类似的undefined
,它表示“未定义”。
JavaScript的设计者希望用null
表示一个空的值,而undefined
表示值未定义。事实证明,这并没有什么卵用,区分两者的意义不大。大多数情况下,我们都应该用null
。undefined
仅仅在判断函数参数是否传递的情况下有用。
结果截图:
0 0
- JS比较运算符及null和Undefined区别
- js null和undefined区别
- js中undefined,null和typeof运算符
- js中undefined,null和typeof运算符
- js中的null和undefined的区别
- Js中null和undefined的区别
- js中的null和undefined的区别
- js 中null 和undefined的区别
- js中null和undefined区别
- js变量null和undefined的区别
- js的undefined和null的区别
- js中null和undefined的区别
- JS 中undefined和null的区别
- JS中undefined和null的区别
- js null和undefined的区别
- js里面null和undefined的区别
- 比较Undefined 和 null
- JS:Undefined 和 Null
- HDU 5976 Detachment 逆元
- epoll 或者 kqueue 的原理(摘自知乎蓝形参)
- iOS崩溃日志收集
- java中讲讲PrintStream的用法,举例?
- ACM_HDU 2031 进制转换
- JS比较运算符及null和Undefined区别
- golang实现ringbuffer(不定长)
- 【专题】网络流之最大流算法
- 李白打酒
- SonarQube之——安装完后出现SonarQube is under maintenance. Please check back later.
- java中讲讲FileOutputStream的用法,举例?
- java内部类
- 分层打印二叉树--Java实现
- 厉曼婷