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的一些看法
May 27 Javascript
动态表格Table类的实现
Aug 26 Javascript
javascript 命名规则 变量命名规则
Feb 25 Javascript
javascript实现网页背景烟花效果的方法
Aug 06 Javascript
js中利用tagname和id获取元素的方法
Jan 03 Javascript
js实现的二分查找算法实例
Jan 21 Javascript
Jquery on方法绑定事件后执行多次的解决方法
Jun 02 Javascript
使用JS实现图片展示瀑布流效果的实例代码
Sep 12 Javascript
探索Javascript中this的奥秘
Dec 11 Javascript
JS点击缩略图整屏居中放大图片效果
Jul 04 Javascript
微信小程序性能优化之checkSession的使用
Mar 06 Javascript
vue3使用vuedraggable实现拖拽功能
Apr 06 Vue.js
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类自动加载器实现方法
2015/07/28 PHP
JS 退出系统并跳转到登录界面的实现代码
2013/06/29 Javascript
jquery 获取表单元素里面的值示例代码
2013/07/28 Javascript
js控制iframe的高度/宽度让其自适应内容
2014/04/09 Javascript
JavaScript字符串对象toUpperCase方法入门实例(用于把字母转换为大写)
2014/10/17 Javascript
基于canvas实现的钟摆效果完整实例
2016/01/26 Javascript
[原创]Bootstrap 中下拉菜单修改成鼠标悬停直接显示
2016/04/14 Javascript
微信小程序教程之本地图片上传(leancloud)实例详解
2016/11/16 Javascript
jQuery模拟实现天猫购物车动画效果实例代码
2017/05/25 jQuery
微信小程序获取手机系统信息的方法【附源码下载】
2017/12/07 Javascript
vue.js element-ui tree树形控件改iview的方法
2018/03/29 Javascript
基于js中的存储键值对以及注意事项介绍
2018/03/30 Javascript
js循环map 获取所有的key和value的实现代码(json)
2018/05/09 Javascript
解决webpack dev-server不能匹配post请求的问题
2018/08/24 Javascript
Vue.js实现表格渲染的方法
2018/09/07 Javascript
使用vue开发移动端管理后台的注意事项
2019/03/07 Javascript
Vue 动态添加路由及生成菜单的方法示例
2019/06/20 Javascript
JS+html5实现异步上传图片显示上传文件进度条功能示例
2019/11/09 Javascript
jQuery实现小火箭返回顶部特效
2020/02/03 jQuery
JS求解两数之和算法详解
2020/04/28 Javascript
Vue单文件组件开发实现过程详解
2020/07/30 Javascript
Windows上使用virtualenv搭建Python+Flask开发环境
2016/06/07 Python
Android基于TCP和URL协议的网络编程示例【附demo源码下载】
2018/01/23 Python
用python实现将数组元素按从小到大的顺序排列方法
2018/07/02 Python
python leetcode 字符串相乘实例详解
2018/09/03 Python
Python使用pyautocad+openpyxl处理cad文件示例
2019/07/11 Python
Python配置文件处理的方法教程
2019/08/29 Python
Python面向对象之多态原理与用法案例分析
2019/12/30 Python
巴西宠物店在线:Geração Pet
2017/05/31 全球购物
全球采购的街头服饰和帽子:Urban Excess
2020/10/28 全球购物
数据库笔试题
2013/05/09 面试题
优秀的计算机专业求职信范文
2013/12/27 职场文书
材料员岗位职责
2014/03/13 职场文书
小学关爱留守儿童活动方案
2014/08/25 职场文书
研修心得体会
2014/09/04 职场文书
大学生求职信怎么写
2015/03/19 职场文书