js中null与0的比较
来源:互联网 发布:淘宝可以上闲鱼吗 编辑:程序博客网 时间:2024/05/22 06:20
简单来说就是:
要比较相等性之前,不能将null和undefined转换成其他任何值。就是undefined和null与其他数在进行相等判断时不进行类型转换。
null == undefined,这个是true。
而==的结果与>=没有任何关系,即>=的结果不是>和==结果的累和;
如:
null>0 //null转化为number,为0,所以0>0结果为false。
null>=0 //null转化为number,为0>=0,所以结果为true。
null==0// null在做相等判断时,不进行转型,所以null和0为不同类型数据,结果为false
============================================================================
1、null>=0 比较结果为true
运算符是抽象运算,当运算>=时实际是比较的null<0
因为null<0为false,所以null>=0为true;
2、null==0 比较结果为false
后来在ECMAScript 6入门(链接)找到==和===的算法细节:
规格对每一种语法行为的描述,都分成两部分:先是总体的行为描述,然后是实现的算法细节。相等运算符的总体描述,只有一句话。
“The comparison x == y, where x and y are values, producestrue or false.”
上面这句话的意思是,相等运算符用于比较两个值,返回true或false。
下面是算法细节:
1、如果x不是正常值(比如抛出一个错误),中断执行。
2、如果y不是正常值,中断执行。
3、如果Type(x)与Type(y)相同,执行严格相等运算x === y。
4、如果x是null,y是undefined,返回true。
5、如果x是undefined,y是null,返回true。
6、如果Type(x)是数值,Type(y)是字符串,返回x == ToNumber(y)的结果。
7、如果Type(x)是字符串,Type(y)是数值,返回ToNumber(x) == y的结果。
8、如果Type(x)是布尔值,返回ToNumber(x) == y的结果。
9、如果Type(y)是布尔值,返回x == ToNumber(y)的结果。
10、如果Type(x)是字符串或数值或Symbol值,Type(y)是对象,返回x == ToPrimitive(y)的结果。
11、如果Type(x)是对象,Type(y)是字符串或数值或Symbol值,返回ToPrimitive(x) == y的结果。
12、返回false。
由于0的类型是数值,null的类型是Null(这是规格4.3.13小节的规定,是内部Type运算的结果,跟typeof运算符无关)。因此上面的前11步都得不到结果,要到第12步才能得到false。
null==0 //false
- js中null与0的比较
- JS中Null与Undefined的区别
- JS中Null与Undefined的区别
- JS中Null与Undefined的区别
- JS中Null与Undefined的区别
- JS中Null与Undefined的区别
- JS中Null与Undefined的区别
- JS中Null与Undefined的区别
- JS中Null与Undefined的区别
- JS中Null与Undefined的区别
- JS中Null与Undefined的区别
- JS中Null与Undefined的区别
- JS中Null与Undefined的区别
- JS中Null与Undefined的区别
- js中null与undefined的差别
- js中null与undefined的区别
- JS中Null与Undefined的区别
- JS中Null与Undefined的区别
- CodeForces
- 附加4个行业的对比表格
- 2017年9月小记
- React简单使用(二)
- 致创业者:APP已死 服务永生
- js中null与0的比较
- db2添加用户及权限
- Debian 9 安装Steam游戏平台
- 机器学习——最邻近规则分类(K Nearest Neighbor)KNN算法的应用
- ###Jsp+Servlet购物商城day03.1:商品添加到购物车。重点笔记
- 二叉排序树
- hpu1414: Kick Ass [字符串]
- hdu6205
- angular4 中使用table [rowspan]="num"