第三篇 JS数据类型之转换篇
AI 概述
1. [] == ![]结果是什么?为什么?2. JS 中类型转换有哪几种?3. == 和 ===有什么区别?4. 对象转原始类型是根据什么流程运行的?5. 如何让 if(a == 1 && a == 2)条件成立?更多相关文章推荐:
1. [] == ![]结果是什么?为什么?
解析:
== 中,左右两边都需要转换为数字然后进行比较。
[]转换...
目录
文章目录隐藏
1. [] == ![]结果是什么?为什么?
解析:
== 中,左右两边都需要转换为数字然后进行比较。
[]转换为数字为 0。
![] 首先是转换为布尔值,由于[]作为一个引用类型转换为布尔值为 true,
因此![]为 false,进而在转换成数字,变为 0。
0 == 0 , 结果为 true
2. JS 中类型转换有哪几种?
JS 中,类型转换只有三种:
- 转换成数字
- 转换成布尔值
- 转换成字符串
转换具体规则如下:
注意”Boolean 转字符串”这行结果指的是 true 转字符串的例子

3. == 和 ===有什么区别?
===叫做严格相等,是指:左右两边不仅值要相等,类型也要相等,例如’1’===1 的结果是 false,因为一边是 string,另一边是 number。
我之前也写过相关文章《js 中==和===两者的区别对比》《js ==号引起的隐性类型转化方法》
==不像===那样严格,对于一般情况,只要值相等,就返回 true,但==还涉及一些类型转换,它的转换规则如下:
- 两边的类型是否相同,相同的话就比较值的大小,例如 1==2,返回 false
- 判断的是否是 null 和 undefined,是的话就返回 true
- 判断的类型是否是 String 和 Number,是的话,把 String 类型转换成 Number,再进行比较
- 判断其中一方是否是 Boolean,是的话就把 Boolean 转换成 Number,再进行比较
- 如果其中一方为 Object,且另一方为 String、Number 或者 Symbol,会将 Object 转换成字符串,再进行比较
console.log({a: 1} == true);//false
console.log({a: 1} == "[object Object]");//true
4. 对象转原始类型是根据什么流程运行的?
对象转原始类型,会调用内置的[ToPrimitive]函数,对于该函数而言,其逻辑如下:
- 如果 Symbol.toPrimitive()方法,优先调用再返回
- 调用 valueOf(),如果转换为原始类型,则返回
- 调用 toString(),如果转换为原始类型,则返回
- 如果都没有返回原始类型,会报错
var obj = {
value: 3,
valueOf() {
return 4;
},
toString() {
return '5'
},
[Symbol.toPrimitive]() {
return 6
}
}
console.log(obj + 1); // 输出 7
5. 如何让 if(a == 1 && a == 2)条件成立?
其实就是上一个问题的应用。
var a = {
value: 0,
valueOf: function() {
this.value++;
return this.value;
}
};
console.log(a == 1 && a == 2);//true
更多相关文章推荐:
以上关于第三篇 JS数据类型之转换篇的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。
声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » 第三篇 JS数据类型之转换篇
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » 第三篇 JS数据类型之转换篇

微信
支付宝