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 相关文章推荐
基于Jquery 解决Ajax请求的页面 浏览器后退前进功能,页面刷新功能实效问题
Dec 11 Javascript
jQuery下实现等待指定元素加载完毕(可改成纯js版)
Jul 11 Javascript
详解JavaScript中undefined与null的区别
Mar 29 Javascript
JavaScript-RegExp对象只能使用一次问题解决方法
Jun 23 Javascript
简单分析javascript面向对象与原型
May 21 Javascript
深入浅析JavaScript中prototype和proto的关系
Nov 15 Javascript
JS实现将数字金额转换为大写人民币汉字的方法
Aug 02 Javascript
详谈ES6中的迭代器(Iterator)和生成器(Generator)
Jul 31 Javascript
Vuejs中使用markdown服务器端渲染的示例
Nov 22 Javascript
你可能不知道的前端算法之文字避让(inMap)
Jan 12 Javascript
Vue中用props给data赋初始值遇到的问题解决
Nov 27 Javascript
JQuery获取可视区尺寸和文档尺寸及制作悬浮菜单示例
May 14 jQuery
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
咖啡知识大全
2021/03/03 新手入门
PHP文件操作方法汇总
2015/07/01 PHP
PHP会话控制实例分析
2016/12/24 PHP
yii2.0整合阿里云oss的示例代码
2017/09/19 PHP
javascript 全角转换实现代码
2009/07/17 Javascript
javascript OFFICE控件测试代码
2009/12/08 Javascript
网页整体变灰白色(兼容各浏览器)实例
2013/04/21 Javascript
JavaScript极简入门教程(三):数组
2014/10/25 Javascript
基于jQuery实现的文字按钮表单特效整理
2014/12/07 Javascript
jquery分析文本里url或邮件地址为真实链接的方法
2015/06/20 Javascript
JS获取CSS样式(style/getComputedStyle/currentStyle)
2016/01/19 Javascript
jQuery实现带水平滑杆的焦点图动画插件
2016/03/08 Javascript
实现JavaScript的组成----BOM和DOM详解
2016/05/18 Javascript
JS正则匹配URL网址的方法(可匹配www,http开头的一切网址)
2017/01/06 Javascript
three.js快速入门【推荐】
2017/01/21 Javascript
JS实现控制图片显示大小的方法【图片等比例缩放功能】
2017/02/18 Javascript
Angular中$broadcast和$emit的使用方法详解
2017/05/22 Javascript
详解Vue中组件传值的多重实现方式
2019/08/16 Javascript
vue 使用v-for进行循环的实例代码详解
2020/02/19 Javascript
简单了解three.js 着色器材质
2020/08/03 Javascript
python PIL模块与随机生成中文验证码
2016/02/27 Python
深入理解python中函数传递参数是值传递还是引用传递
2017/11/07 Python
python数据挖掘需要学的内容
2019/06/23 Python
Python中面向对象你应该知道的一下知识
2019/07/10 Python
PyTorch: Softmax多分类实战操作
2020/07/07 Python
2014社区三八妇女节活动总结
2014/03/01 职场文书
宝宝满月酒主持词和仪式流程
2014/03/27 职场文书
学习实践科学发展观心得体会
2014/09/10 职场文书
国家机关领导干部民主生活会对照检查材料思想汇报
2014/09/17 职场文书
大学生翘课检讨书范文
2014/10/06 职场文书
2014年化工厂工作总结
2014/11/25 职场文书
工商局个人工作总结
2015/03/03 职场文书
六一活动主持词
2015/06/30 职场文书
2015年国庆晚会主持词
2015/07/01 职场文书
教你解决往mysql数据库中存入汉字报错的方法
2021/05/06 MySQL
Vue OpenLayer 为地图绘制风场效果
2022/04/24 Vue.js