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 相关文章推荐
获取焦点时,利用js定时器设定时间执行动作
Apr 02 Javascript
js操作label给label赋值及取label的值示例
Nov 07 Javascript
Extjs4中tree的拖拽功能(可以两棵树之间拖拽) 简单实例
Dec 08 Javascript
js查找某元素中的所有图片地址的方法
Jan 16 Javascript
jQuery弹出层插件Lightbox_me使用指南
Apr 21 Javascript
深入理解JavaScript内置函数
Jun 03 Javascript
微信小程序 保留小数(toFixed)详细介绍
Nov 16 Javascript
jQuery实现拖动剪裁图片作为头像
Dec 28 Javascript
react.js CMS 删除功能的实现方法
Apr 17 Javascript
vue脚手架及vue-router基本使用
Apr 09 Javascript
vue写一个组件
Apr 09 Javascript
默认浏览器设置及vue自动打开页面的方法
Sep 21 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
VFP与其他应用程序的集成
2006/10/09 PHP
献给php初学者(入门学习经验谈)
2010/10/12 PHP
一篇有意思的技术文章php介绍篇
2010/10/26 PHP
JoshChen_web格式编码UTF8-无BOM的小细节分析
2013/08/16 PHP
xss防御之php利用httponly防xss攻击
2014/03/21 PHP
php文件上传你必须知道的几点
2015/10/20 PHP
PHP基于DOMDocument解析和生成xml的方法分析
2017/07/17 PHP
php微信开发之关注事件
2018/06/14 PHP
PHP中ltrim()函数的用法与实例讲解
2019/03/28 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
2019/11/23 PHP
jQuery 处理网页内容的实现代码
2010/02/15 Javascript
JS模拟自动点击的简单实例
2013/08/08 Javascript
15条JavaScript最佳实践小结
2013/08/09 Javascript
在JavaScript中重写jQuery对象的方法实例教程
2014/08/25 Javascript
javascript实现支持移动设备画廊
2015/08/24 Javascript
javascript禁止超链接跳转的方法
2016/02/02 Javascript
bootstrap输入框组代码分享
2016/06/07 Javascript
vue实现简单的星级评分组件源码
2018/11/16 Javascript
解决Idea、WebStorm下使用Vue cli脚手架项目无法使用Webpack别名的问题
2019/10/11 Javascript
Python中的闭包总结
2014/09/18 Python
Python内置函数之filter map reduce介绍
2014/11/30 Python
为python设置socket代理的方法
2015/01/14 Python
python操作gmail实例
2015/01/14 Python
Python之Scrapy爬虫框架安装及使用详解
2017/11/16 Python
Django + Uwsgi + Nginx 实现生产环境部署的方法
2018/06/20 Python
Python文件如何引入?详解引入Python文件步骤
2018/12/10 Python
Python TCP通信客户端服务端代码实例
2019/11/21 Python
使用python-opencv读取视频,计算视频总帧数及FPS的实现
2019/12/10 Python
pytorch 实现查看网络中的参数
2020/01/06 Python
Python字典实现伪切片功能
2020/10/28 Python
现代家居用品及礼品:LBC Modern
2018/06/24 全球购物
Moda Operandi官网:美国奢侈品电商,海淘秀场T台同款
2020/05/26 全球购物
教师实习自我鉴定
2013/12/11 职场文书
办公室主任四风问题对照检查材料思想汇报
2014/09/28 职场文书
清洁工工作总结
2015/08/11 职场文书
Python 阶乘详解
2021/10/05 Python