js隐式转换的知识实例讲解


Posted in Javascript onSeptember 28, 2018

开胃菜

[] == ![]         //true ==> "" == false
123 ^ []          //123  ==> 123 ^ 0
~{}            //-1  ==> ~0
{} >= {1,2}        //true ==>因为大于等于的比较,不是相等的比较,所以[object Object] >=[object Object]
[null] == ""        //true ==> [""] == ""

值得注意的操作符:

一元操作符:通过Number()进行转换;其中包括*号运算符,/号运算符,都是经Number()转换

+undefined  //NaN

逻辑运算符:!等价于Boolean(),将操作数进行布尔值类型转换

位操作:~, |, &, ^;当一边操作数为NaN时,可等价于操作数为0;

//由以下变化可以证得:
NaN ^ NaN ^ NaN = 0

加号运算符,比较复杂

优先级最高的是字符串,任何操作数与字符串相加都将其String(x)成字符串,再进行字符串拼接

console.log("a" + 1);      //"a1"
console.log("a" + "1");     //"a1"
console.log("a" + false);    //"afalse"
console.log("a" + undefined);  //"aundefined"
console.log("a" + NaN);     //"aNaN"
console.log("a" + null);    //"anull"
console.log("a" + {});     //"a[object Object]"

其次number,而object在正常情况下输出的就是string类型

//console.log(1 + "1");   //"11"
console.log(1 + 1);     //2
console.log(1 + true);   //2 
console.log(1 + undefined); //NaN
console.log(1 + NaN);    //NaN
console.log(1 + null);   //1
console.log(1 + {});    //"1[object,Object]"

当一方为Boolean,或者两方都是Boolean时,都将其进行Number处理,同理undefined与null也一样

console.log(true + true);   //2 
console.log(true + undefined); //NaN
console.log(true + NaN);    //NaN
console.log(true + null);   //1
console.log((true + [NaN]));  //"trueNaN"

减号,则将两边都进行Number()处理

比较运算:==, >, <, >=, >=, != 遵循规则(摘自高程3):

1.null和undefined是相等的

2.要比较相等之前,不能将null和undfined转换成其他任何值

3.如有一个操作数为NaN,相等操作符返回fasle,不相等操作符返回true, NaN不等于NaN

4.两个对象之间的比较,两者指向同一个对象(地址相同),相等操作符返回true,否则返回false

值得注意的是:对象间的>=与==(!=)比较方式是不同的,前者是toString()返回值的比较,后者是引用地址的比较

当都是两边都是字符串时,按字符编码大小进行比较

当一方操作数为boolean,string,object,转成number类型的数值再进行比较;

console.log("NaN" == NaN);     //false
console.log(undefined == null);  //true
console.log({} >= {1:2});     //true
console.log({1:2} != {});     //true
console.log({} == {1:2});     //false
console.log([1] == [1]);      //false
console.log(null == 0);      //false
Javascript 相关文章推荐
javascript 解析后的xml对象的读取方法细解
Jul 25 Javascript
js中indexof的用法详细解析
Dec 24 Javascript
js类定义函数时用prototype与不用的区别示例介绍
Jun 10 Javascript
通过JS来动态的修改url,实现对url的增删查改
Sep 01 Javascript
Javascript 拖拽的一些高级的应用(逐行分析代码,让你轻松了拖拽的原理)
Jan 23 Javascript
JS实现控制表格行文本对齐的方法
Mar 30 Javascript
利用HTML5的画布Canvas实现刮刮卡效果
Sep 06 Javascript
基于JS实现新闻列表无缝向上滚动实例代码
Jan 22 Javascript
JavaScript中的Array 对象(数组对象)
Jun 02 Javascript
JS实现的简单折叠展开动画效果示例
Apr 28 Javascript
vue里input根据value改变背景色的实例
Sep 29 Javascript
vue父子组件间引用之$parent、$children
May 20 Javascript
vue.js父子组件通信动态绑定的实例
Sep 28 #Javascript
解决webpack+Vue引入iView找不到字体文件的问题
Sep 28 #Javascript
JavaScript循环遍历你会用哪些之小结篇
Sep 28 #Javascript
浅谈vue引用静态资源需要注意的事项
Sep 28 #Javascript
学习jQuery中的noConflict()用法
Sep 28 #jQuery
代码分析vue中如何配置less
Sep 28 #Javascript
使用JavaScript破解web
Sep 28 #Javascript
You might like
PHP图片处理之图片背景、画布操作
2014/11/19 PHP
PHP中FTP相关函数小结
2016/07/15 PHP
thinkPHP实现多字段模糊匹配查询的方法
2016/12/01 PHP
jQuery EasyUI API 中文文档 - Parser 解析器
2011/09/29 Javascript
文本框根据输入内容自适应高度的代码
2011/10/24 Javascript
Node.js模块加载详解
2014/08/16 Javascript
javascript自动生成包含数字与字符的随机字符串
2015/02/09 Javascript
jquery实现全屏滚动
2015/12/28 Javascript
值得分享和收藏的Bootstrap学习教程
2016/05/12 Javascript
jquery UI Datepicker时间控件冲突问题解决
2016/12/16 Javascript
ng-zorro-antd 入门初体验
2018/12/03 Javascript
node.js使用express框架进行文件上传详解
2019/03/03 Javascript
如何使用webpack打包一个库library的方法步骤
2019/12/18 Javascript
[01:08:09]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第二局
2016/03/02 DOTA
[40:03]Liquid vs Optic 2018国际邀请赛淘汰赛BO3 第一场 8.21
2018/08/22 DOTA
用Python写的图片蜘蛛人代码
2012/08/27 Python
把大数据数字口语化(python与js)两种实现
2013/02/21 Python
Python打造出适合自己的定制化Eclipse IDE
2016/03/02 Python
python编程嵌套函数实例代码
2018/02/11 Python
python如何对实例属性进行类型检查
2018/03/20 Python
浅谈python实现Google翻译PDF,解决换行的问题
2018/11/28 Python
python flask安装和命令详解
2019/04/02 Python
Python搭建代理IP池实现接口设置与整体调度
2019/10/27 Python
Python自动登录QQ的实现示例
2020/08/28 Python
浅谈CSS3 动画卡顿解决方案
2019/01/02 HTML / CSS
html5构建触屏网站之网站尺寸探讨
2013/01/07 HTML / CSS
日本卡普空电视游戏软件公司官方购物网站:e-CAPCOM
2018/07/17 全球购物
架构师岗位职责
2013/11/18 职场文书
新书吧创业计划书
2014/01/31 职场文书
优秀毕业生自我鉴定
2014/02/11 职场文书
大专学生求职自荐信
2014/07/06 职场文书
高中生第一学年自我鉴定
2014/09/12 职场文书
2015年国庆节演讲稿范文
2015/07/30 职场文书
2016年中学清明节活动总结
2016/04/01 职场文书
导游词之太湖
2019/10/08 职场文书
selenium.webdriver中add_argument方法常用参数表
2021/04/08 Python