<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title></head><body><script>/* == 的隐式转换:1、如果类型相同,无须进行类型转换;2、如果其中一个操作值是 null 或者 undefined,那么另一个操作符必须为 null 或者 undefined,才会返回 true,否则都返回 false;3、如果其中一个是 Symbol 类型,那么返回 false;4、两个操作值如果为 string 和 number 类型,那么就会将字符串转换为 number;5、如果一个操作值是 boolean,那么转换成 number;6、如果一个操作值为 object 且另一方为 string、number 或者 symbol,就会把 object 转为原始类型再进行判断(调用 object 的 valueOf/toString 方法进行转换)。 */console.log('123' == 123); // true,都转换成了number类型console.log('' == null); //false,都转换成了String类型,String(null)=null,而不是''console.log('' == 0); //true,都转换成了Number类型,Number('')=0console.log([] == 0); //true,都转换成了Number类型,Number([])=0console.log([] == ''); //true,都转换成了String类型,String([])=''console.log([] == ![]); //true,都转换成Number类型,都为0console.log(null == undefined); //true,如果其中一个操作值是 null 或者 undefined,那么另一个操作符必须为 null 或者 undefined,才会返回 true,否则都返回 falseconsole.log(Number(null)); //0console.log(Number('')); //0console.log(parseInt('')); //NAN,为0的是parseInt('0')=0console.log('----------------------');/* + 的隐式转换:如果其中有一个是字符串,另外一个是 undefined、null 或布尔型,则调用 toString() 方法进行字符串拼接;如果是纯对象、数组、正则等,则默认调用对象的转换方法会存在优先级,然后再进行拼接。如果其中有一个是数字,另外一个是 undefined、null、布尔型或数字,则会将其转换成数字进行加法运算,对象的情况还是参考上一条规则。如果其中一个是字符串、一个是数字,则按照字符串规则进行拼接。*/console.log(1 + 'a'); //'1a'   字符串、数字      拼接console.log('a' + 1); //'a1' 字符串、数字      拼接console.log('3' + 2); //'32' 字符串、数字      拼接console.log('3' - 2); //1       减法直接全部转换成数字console.log('1'+'2');       //'12'        字符串、字符串 拼接console.log('1'+undefined);    //'1undefined'    字符串、undefined   拼接console.log('1'+null);     //'1null'     字符串、null            拼接console.log('1'+true);     //'1true'     字符串、true            拼接console.log('1'+1n);       //'11'            字符串、BigInt      拼接console.log({} + 10); //[object Object]10    对象、number           拼接console.log(1+undefined);    //NaNconsole.log(1+null);      //1             数字、null         运算console.log(1+true);     //2             数字、true         运算//console.log(1+1n);         //报错            数字、BigInt       console.log('----------------------');/* Object 的隐匿转换:1、优先第1,返回 Symbol.toPrimitive 方法2、优先第2,返回 valueOf()3、优先第3,返回 toString()4、如果都没有返回基础类型,会报错 */let obj = {value:3,[Symbol.toPrimitive]() {return 1;},valueOf() {return 2;},toString() {return 'Hello';}}console.log(obj + 10); //11 //存在Symbol.toPrimitive 方法    则返回11//不存在Symbol.toPrimitive 方法,存在valueOf()方法    则返回12//不存在Symbol.toPrimitive 方法,不存在valueOf()方法,存在toString()方法 则返回'Hello10'//不存在Symbol.toPrimitive 方法,不存在valueOf()方法,不存在toString()方法   则返回'[object Object]10'</script></body>
</html>

Javascript隐式数据类型转换(==、+、Object)相关推荐

  1. MySQL 避坑指南之隐式数据类型转换

    作者 | 不剪发的Tony老师 责编 | 欧阳姝黎 出品 | CSDN博客 ????知之为知之,不知为不知,是知也.--<论语> 今天我们来聊聊 MySQL 中存在的隐式数据类型转换以及可 ...

  2. SQL Server 2008处理隐式数据类型转换在执行计划中的增强

    关注我们获得更多内容 作者 | 邹建,资深数据库专家,精通各项 SQL Server 技术,具有丰富的管理.维护.优化能力以及业务应用经验.他一直热心于技术知识的分享.传播,持续活跃在 CSDN 和 ...

  3. 【JavaScript】-- 隐式数据类型转换

    数据类型的隐式转换 一.基本数据类型的转换 1.加减乘除 加法:如果字符串加数字,数字就会转成字符串.而 数字加数字 或 字符串加字符串 则不需要进行转换直接进行运算或字符串拼接. 减法: 数字减字符 ...

  4. JS基础语法(05)-隐式数据类型转换

    1.为什么要有隐式类型转换? 当运算符在运算时,如果两边数据不统一,CPU就无法计算,这时我们编译器会自动将运算符两边的数据做一个数据类型转换,转成一样的数据类型再计算 2.什么是隐式类型转换:编译器 ...

  5. oracle隐式转换函数,隐式数据类型转换案例一则

    在OLTP系统中,要求对频繁执行的SQL使用绑定变量(唯一值少的字段,如type.status等,数据分布不均是常见情况,这种字段不建议使用绑定变量). 在使用绑定变量时,有时开发人员对使用的字段类型 ...

  6. ES5-拓展 隐式数据类型转换

    Boolean转换原则:非假即真 6种虚值 原始值转换为原始值 对象转换为原始值 Date()和new Date() new Date可以不写括号(new方式返回的一定是对象),返回Date对象 Da ...

  7. JavaScript隐式类型转换

    JavaScript隐式类型转换 基本数据类型 ECMAScript 一共定义了七种 build-in types,其中六种为 Primitive Value,Null, Undefined,Stri ...

  8. JavaScript 隐式类型转换

    JavaScript 是非常宽容的,「来者不拒」,不在乎什么类型. 例如,它如果想要接受数字,它并不拒绝其他类型的值,而是试图把它们转换成数字: > '5' - '2' 3 > '5' * ...

  9. JavaScript入门(part5)--数据类型转换

    学习笔记,仅供参考,有错必纠 参考自:pink老师教案 文章目录 JavaScript入门 获取变量数据类型 数据类型转换 转换为字符串 转换为数字型 转换为布尔型 JavaScript入门 获取变量 ...

最新文章

  1. 吃透这套架构体系,三年成为架构师!
  2. angular 多个片段拼接_10个JavaScript代码片段,帮助你成为更好的开发者
  3. Fireworks 期望,几何分布,概率,三分(2020.12.南京)
  4. 批量ping脚本shell_30个Linux Shell脚本经典案例(上)
  5. [推荐] 世界上最健康的作息时间表
  6. iOS - UITextField
  7. 2021年上半年移动广告流量观察白皮书
  8. Logistic Regression 之 Sigmoid
  9. 鸿星尔克与钉钉签署专属音视频合作 全国5千家门店均可接入
  10. 【github系列】github创建tag
  11. Salesforce LWC学习(二) helloWorld程序在VSCode中的实现
  12. 关于安装centOS精简版ifconfig无效的问题
  13. 「leetcode」1. 两数之和:map等候多时了
  14. C语言符号意思(看了必懂系列)
  15. 迅雷“应版权方要求,文件无法下载”完美解决方法!
  16. 无源贴片晶振四角引脚_四脚贴片晶振有方向之分吗
  17. 6轴串联关节机器人的奇异点
  18. 用两个小例子来解释单例模式中的“双重锁定”
  19. 爬虫报错requests.exceptions.ProxyError:/Failed to establish a new connection: [WinError 10061]
  20. 《Dreamweaver CS6 完全自学教程》笔记 第十七章:Spry 框架技术

热门文章

  1. 人工智能的未来:杀戮还是治愈?
  2. AI 时代,为什么程序员很贵?
  3. Python 图像处理实战 | 图像的灰度非线性变换之对数变换、伽马变换
  4. 微信推出“腾讯QQ”小程序;马化腾又要发红包;GitLab 12.5 稳定版发布| 极客头条...
  5. “偷师腾讯”,苹果要分游戏这杯羹!| 畅言
  6. Hacker News 8 月招聘趋势榜:React 连续 15 月登顶,Python 卫冕编程语言
  7. 最强 IDE 之争:Eclipse 还是没超过 Visual Studio、Xcode 回温
  8. 等重构完这系统,我就辞职!
  9. 中兴恢复产能还需数周;前苹果工程师已获保释;iPhone再现爆炸门 | 极客头条...
  10. 今日头条、快手们疯狂招人是人工智能的失败?