js不同类型作比较

本文详细介绍了JavaScript中不同类型的变量在进行比较时的具体规则,包括对象、字符串、布尔值等之间的转换及比较过程,并解释了null、undefined与其他类型的比较结果。

引用自

http://www.zhufengpeixun.cn/jishuziliao/javaScriptzhuanti/2014-06-14/300.html   

不同类型间的比较,规律如下

 

类型

类型

规律

其它说明

对象

对象

比较是不是同一个内存地址

 

对象

字符串

对象先转化为字符串,然后做比较

 

对象

布尔类型

两边都要先转为数字(false是0,true是1)。是对象类型先隐式调用toString方法,然后再Number()

 alert([2]==true)未false,转为2==1 false

对象

数字

对象要转为数字,再进行比较(对象先隐式调用toString方法转化为字符串,然后再把这个字符串轮化为数字,相当于把这个字符串放到Number这个方法中)

 

数字

布尔

是进行的数字的比较

 

数字

字符串

把字符串转化为数,再比较

 

布尔

 

把两边都要转化为数字再进行比较

 

null

undefined

true

 

null,undefined

和其它类型

null和undefined和其它类型比较都是false(这两个对象没toString方法),和自身比较是true。

 

(undefined==undefined); true
(null==null);true

NaN

和其它类型

和说有比较都为false,和自身比较也为fasle,判断是否为NaN使用isNaN()

(NaN==NaN)   false

自身做布尔运算的时候的转换

类型

规律

示例

object

都是true 

 alert(!![])

number

只是0和NaN是false

 alert(!!0);

string

只有空字符串是false(不是空格字符串)

 alert(!!"");

function

都是ture

 

null,undefined

都是false

 

 

转载于:https://www.cnblogs.com/alway-july/p/6557890.html

### JavaScript 类型比较规则 在 JavaScript 中,不同类型的值之间进行比较时遵循特定的转换和比较规则。以下是详细的说明: #### 1. 同类类型比较 当两个操数属于同一基本数据类型(如 `number`、`string` 或 `boolean`),则直接按字面意义进行比较。 对于对象类型(包括数组和其他复杂结构),只有在同一内存地址上的实例才会被认为是相等的;即使内容相同也不例外[^1]。 #### 2. 不同类别的隐式转换与比较 如果参与运算的操数不是相同的原始类型,则会发生自动类型转换以便执行有效的对比过程: - **Number vs String**: 字符串会被尝试解析成数值形式再做进一步处理。 - **Boolean to Number/String**: 布尔值会先被转为0(false)或1(true),之后按照上述原则继续与其他类型匹配计算。 - **Null/Undefined Handling**: 这两种特殊标记均视为 "空缺", 它们互相间以及同任何其他种类的数据项==判断都会得到false的结果,除非遇到null == undefined这种情况例外返回true;而===全等号下两者永远不等于除自己以外的东西. ```javascript console.log(null == undefined); // true console.log(null === undefined); // false ``` #### 3. 使用严格相等 (===) 为了避免意外的类型转换带来的不确定性和潜在错误,在大多数情况下推荐使用严格的相等运算符 (`===`) 来代替宽松版本(`==`).前者不仅检查值的一致性还会验证它们所属类别是否一致. ```javascript // Loose equality with type coercion console.log('5' == 5); // true // Strict equality without type coercion console.log('5' === 5); // false ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值