网站首页 > 技术文章 正文
js中的隐式转换
小白至IT
正常的运算已经让人承受不住,为什么还有隐式转换?因为js属于弱类型语言,乍一看,包罗万象,其实是规则不强硬引起的放荡!
步入正题,其实js中隐式类型转换是有规律可循的,先来看一下各类型之间的运算情况:
1.对象与布尔
对象和布尔值进行比较时,对象先转换为字符串,然后再转换为数字,布尔值直接转换为数字
[] == true; //false []转换为字符串'',然后转换为数字0,true转换为数字1,所以为false
2.对象和字符串
对象和字符串进行比较时,对象转换为字符串,然后两者进行比较
[1,2,3] == '1,2,3' // true [1,2,3]转化为'1,2,3',然后和'1,2,3', 所以结果为true;
3.对象和数字
对象和数字进行比较时,对象先转换为字符串,然后转换为数字,再和数字进行比较
[1] == 1; // true `对象先转换为字符串再转换为数字,二者再比较 [1] => '1' => 1 所以结果为true
4.字符串和数字
字符串和数字进行比较时,字符串转换成数字,二者再比较
'1' == 1 // true
5.字符串和布尔值
字符串和布尔值进行比较时,二者全部转换成数值再比较
'1' == true; // true
6.布尔值和数字
布尔值和数字进行比较时,布尔转换为数字,二者比较
true == 1 // true
7.对象和字符串
对象和字符串进行比较时,对象转换为字符串,然后两者进行比较
[1,2,3] == '1,2,3' // true [1,2,3]转化为'1,2,3',然后和'1,2,3', 所以结果为true;
其实规律很简单,大家可以记下边这个图
如图,任意两种类型比较时,如果不是同一个类型比较的话,则按如图方式进行相应类型转换,如对象和布尔比较的话,对象 => 字符串 => 数值 布尔值 => 数值。undefined与null是特殊情况,undefined==null为true。
猜你喜欢
- 2024-11-01 Airbnb 开源力作:自动将 JavaScript 代码转换为 TypeScript
- 2024-11-01 JavaScript类型在什么情况下会发生类型自动转换
- 2024-11-01 js如何将接口get参数串转换成post格式输出
- 2024-11-01 【JS 字符转换】fromCharCode和charCodeAt
- 2024-11-01 几个JS开发小技巧,转换(js 开发)
- 2024-11-01 JavaScript将unicode编码转换为中文
- 2024-11-01 每日一题(js篇)通过js做进制转换(js 10进制转2进制)
- 2024-11-01 JavaScript-类型转换 224(javascript)
- 2024-11-01 基于Javascript编写的开源Markdown和HTML相互转换器——showdown
- 2024-11-01 一文读懂js中的隐式类型转换(js隐式调用)
- 1507℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 510℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 486℃MySQL service启动脚本浅析(r12笔记第59天)
- 466℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 464℃启用MySQL查询缓存(mysql8.0查询缓存)
- 444℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 423℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 420℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)