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基础知识大集锦(二) 推荐收藏
Jan 13 Javascript
面向对象的Javascript之二(接口实现介绍)
Jan 27 Javascript
网站如何做到完全不需要jQuery也可以满足简单需求
Jun 27 Javascript
js判断价格,必须为数字且不能为负数的实现方法
Oct 07 Javascript
基于JavaScript实现轮播图原理及示例
Apr 10 Javascript
RequireJs的使用详解
Feb 19 Javascript
微信小程序 图片上传实例详解
May 05 Javascript
Node.js利用断言模块assert进行单元测试的方法
Sep 28 Javascript
three.js中文文档学习之通过模块导入
Nov 20 Javascript
用vue-cli开发vue时的代理设置方法
Sep 20 Javascript
详解如何快速配置webpack多入口脚手架
Dec 28 Javascript
基于Vue+Webpack拆分路由文件实现管理
Nov 16 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
一首老MP3,致敬WAR3经典
2021/03/08 魔兽争霸
PHP根据IP判断地区名信息的示例代码
2014/03/03 PHP
让CodeIgniter数据库缓存自动过期的处理的方法
2014/06/12 PHP
php中运用http调用的GET和POST方法示例
2014/09/29 PHP
PHP动态输出JavaScript代码实例
2015/02/12 PHP
Smarty中的注释和截断功能介绍
2015/04/09 PHP
如何批量清理系统临时文件(语言:C#、 C/C++、 php 、python 、java )
2016/02/01 PHP
如何修改yii2.0自带的user表为其它的表
2017/08/01 PHP
PHP多进程编程之僵尸进程问题的理解
2017/10/15 PHP
Javascript快速排序算法详解
2014/12/03 Javascript
详解AngularJS中的依赖注入机制
2015/06/17 Javascript
浅析Node.js 中 Stream API 的使用
2015/10/23 Javascript
AngularJS directive返回对象属性详解
2016/03/28 Javascript
Jquery Easyui验证组件ValidateBox使用详解(20)
2016/12/18 Javascript
AngularJS实现使用路由切换视图的方法
2017/01/24 Javascript
vue增删改查的简单操作
2017/07/15 Javascript
JS中注入eval, Function等系统函数截获动态代码
2019/04/03 Javascript
Vue+axios+WebApi+NPOI导出Excel文件实例方法
2019/06/05 Javascript
返回上一个url并刷新界面的js代码
2020/09/12 Javascript
了不起的11个JavaScript代码重构最佳实践小结
2021/01/11 Javascript
[01:16:12]完美世界DOTA2联赛PWL S2 FTD vs Inki 第一场 11.21
2020/11/23 DOTA
Python配置mysql的教程(推荐)
2017/10/13 Python
Python3.6基于正则实现的计算器示例【无优化简单注释版】
2018/06/14 Python
Python使用cx_Freeze库生成msi格式安装文件的方法
2018/07/10 Python
python实现的自动发送消息功能详解
2019/08/15 Python
html5将图片转换成base64的实例代码
2016/09/21 HTML / CSS
亚马逊西班牙购物网站:amazon西班牙
2017/03/06 全球购物
Booking.com美国:全球酒店预订网站
2017/04/18 全球购物
瑞士首家网上药店折扣店:McDrogerie
2020/12/22 全球购物
银行见习期自我鉴定
2014/01/29 职场文书
运动会解说词200字
2014/02/06 职场文书
2014村务公开实施方案
2014/02/25 职场文书
教研活动总结
2014/04/28 职场文书
中学生自我评价范文
2015/03/03 职场文书
闭幕词的写作格式与范文!
2019/06/24 职场文书
SpringBoot整合Mybatis Generator自动生成代码
2021/08/23 Java/Android