JS隐式转换_隐式转换是什么
2023-06-13 09:14:59 时间
在什么条件下会触发隐式转换机制?
在进行比较运算,或者进行四则运算时,常常会触发JS中的隐式转换机制。
首先要记住JS设计者的初衷是美好的,他希望 == 是美好的操作选择,但是在美好的希望也是希望。
小案例
- 为什么 [] == false ? 类型不同比较时,需要先做类型转换,==比较时有布尔值参与时,需要比较双方均转为数字,[ ]是非原值,需要转换为原值二者才能进行比较,大部分对象转换为原值最后都是调用的toString方法,[] –> toString() —> ‘’,当字符串和数字比较时,会把字符串转换为数字,而空字符串转换为数字结果是0,而 0 == 0,所以结果为true
- 为什么NaN !== NaN? 这是隐式转换的一个很大的弊端,es6的includes方法可以检测出NaN等于NaN,这是一大进步
- null == 0 结果为false 这时候两边的类型也不同,但是却没有做类型转换,why?因为这时候二者都已经是基本数据类型了,没有办法在进行转换了,所以二者的类型都不可能相同,结果自然为false
- 为什么null == undefined 结果为true 这是一种规定 if x is null and y is undefined, return true if y is null and x is undefined, return true
- 为什么 !![] = true 这里并没有涉及 == 比较,只需要判断 [] 是true还是false即可
注意,字符串转换为数字调用的是Number方法,NaN也是数字,某些方面来说布尔类型也属于一种int类型
隐式转换的最大弊端
NaN不等于NaN
几种为false的情况,只要不是这几组值,结果均为true
0,’’,NaN,false,null,undefined
涉及隐式转换最多的两个运算符
+ ,==
三种隐式转换
1、将值转为原始值 2、将值转为数字 3、将值转为字符串
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/183231.html原文链接:https://javaforall.cn
相关文章
- WordPress整合Highslide JS 灯箱效果
- ZXV10 H608B V1.1.04T02_JS激活成功教程
- JS实现图片循环滚动
- JS跳转代码_js中跳转页面路径
- mysql 隐式转换_js强制转换和隐式转换
- javascript获取当前时间,按指定格式输出_js获取现在本地时间的代码
- Js/JQuery将数字金额转换为其他国家货币格式(包括货币符号和千分符)
- Js/JQuery将金额数字转换为中文万、亿结尾
- js 基础 json
- 【JS 逆向百例】猿人学系列 web 比赛第五题:js 混淆 - 乱码增强,详细剖析
- 【JS 逆向百例】猿人学系列 web 比赛第二题:js 混淆 - 动态 cookie,详细剖析
- 如何用JS实现网页上通过鼠标移动批量选择元素?
- 原生 JS 实现 HTML 转 Markdown ,html2md.js
- 前端 CST和GMT+0800时间转换(js/vue/react/jsp通用)
- js,jquery发送短信倒计时实现代码详解编程语言
- js给redio设置哪一个被选中详解编程语言
- JS运算符 ==和===详解编程语言
- 使用 Node.js 构建交互式命令行工具
- 非常不错的一个JS分页效果代码,值得研究
- JS巧妙获取剪贴板数据Excel数据的粘贴
- js中用事实证明cssText性能高的问题
- Json字符串转换为JS对象的高效方法实例
- .NET+JS对用户输入内容进行字数提示功能的实例代码
- js整数字符串转换为金额类型数据(示例代码)
- 使用js判断控件是否获得焦点
- js数值转换为3位逗号分隔的示例代码