web前端|js教程
JavaScript,js,引起
web前端-js教程
JavaScript中由==判断所引起的转换会引发解释器的一些列执行步骤,接下来我们就来详解JavaScript中双等号引起的隐性类型转换,需要的朋友可以参考下
轴承网站源码,vscode gcc配置,ubuntu使用教程兄弟连,云主机tomcat,sqlite模糊查询数字,Tempus插件,web开发前端框架培训,爬虫网站有利吗,php函数参数的传递参数,seo data,网站微信认证源码,弹出式网页,phpstudy安装dede模板,用c语言编写物业管理系统,PC手机微信app小程序五合一源码lzw
引子
h5会员个人中心源码,ubuntu 制作u启动,tomcat302重进项,自学爬虫薪酬,Php代码骂人,百度推广seo渠道有哪些lzw
if语句应该是程序员用的比较多的语句,很多时候都要进行if判断,if语句一般用双等号来判断前后两个元素是否是一致的,假如是一致,那么返回是true,然后执行下面的语句,否则,执行别的语句。本文所说的隐性类型的转换,说的是==引起的转换。举个简单的例子,双等号不是全等号,全等号是“===”三个等号,语句”1″==1,那么一般情况下是前面的字符串”1“转换为数字1,然后进行比较。通过这个例子应该了解了什么是隐性类型的转换了吧!
jsp源码 政府,ubuntu安装不了php,如何用tomcat免费建站,网络爬虫判刑,php抽象模式教程交流,seo专员有前途吗seo教程lzw
隐性类型转换步骤
A、首先看双等号前后有没有NaN,如果存在NaN,一律返回false。
B、再看双等号前后有没有布尔,有布尔就将布尔转换为数字。(false是0,true是1)
C、接着看双等号前后有没有字符串, 有三种情况:
1、对方是对象,对象使用toString()或者valueOf()进行转换;
2、对方是数字,字符串转数字;(前面已经举例)
3、对方是字符串,直接比较;
4、其他返回false
D、如果是数字,对方是对象,对象取valueOf()或者toString()进行比较, 其他一律返回false
E、null, undefined不会进行类型转换, 但它们俩相等
上面的转换顺序一定要牢记,面试的时候,经常会出现类型的问题。
.toString()方法和.valueOf()方法数值转换
通常情况下我们认为,将一个对象转换为字符串要调用toString()方法,转换为数字要调用valueOf()方法,但是真正应用的时候并没有这么简单,看如下代码实例:
var obj = { webName: "haorooms前端博客", url:""}console.log(obj.toString()); //[object Object]
同理,我们再看valueOf()方法:
var arr = [1, 2, 3];console.log(arr.valueOf());//[1, 2, 3]
从上面的代码可以看出,valueOf()方法并没有将对象转换为能够反映此对象的一个数字。相反,我们用toString()
var arr = [1, 2, 3];console.log(arr.toString());//1,2,3
注:很多朋友认为,转换为字符串首先要调用toString()方法, 其实这是错误的认识,我们应该这么理解,调用toString()方法可以转换为字符串,但不一定转换字符串就是首先调用toString()方法。
我们看下下面代码:
var arr = {};arr.valueOf = function () { return 1; }arr.toString = function () { return 2; }console.log(arr == 1);//truevar arr = {};arr.valueOf = function () { return []; }arr.toString = function () { return 1; }console.log(arr == 1);//true
上面代码我们可以看出,转换首先调用的是valueOf(),假如valueOf()不是数值,那就会调用toString进行转换!
var arr = {};arr.valueOf = function () { return "1"; }arr.toString = function () { return "2"; }console.log(arr == "1");//true
假如”1″是字符串,那么它首先调用的还是valueOf()。
var arr = [2];console.log(arr + "1");//21
上面的例子,调用的是toString;因为arr.toString之后是2。
转换过程是这样的,首先arr会首先调用valueOf()方法,但是数字的此方法是简单继承而来,并没有重写(当然这个重写不是我们实现),返回值是数组对象本身,并不是一个值类型,所以就转而调用toString()方法,于是就实现了转换为字符串的目的。
小结
大多数对象隐式转换为值类型都是首先尝试调用valueOf()方法。但是Date对象是个例外,此对象的valueOf()和toString()方法都经过精心重写,默认是调用toString()方法,比如使用+运算符,如果在其他算数运算环境中,则会转而调用valueOf()方法。
var date = new Date();console.log(date + "1"); //Sun Apr 17 17:54:48 GMT+0800 (CST)1console.log(date + 1);//Sun Apr 17 17:54:48 GMT+0800 (CST)1console.log(date - 1);//1460886888556console.log(date * 1);//1460886888557
上面是我整理给大家的,希望今后会对大家有帮助。
相关文章:
深入解析JavaScript中的arguments对象(图文教学)
JavaScript_object基础入门(必看篇)(图文教学)
详细解读javascript客户端事件驱动(图文教学)
如果觉得《详细解读JavaScript中双等号引起的隐性类型转换(图文教程)》对你有帮助,请点赞、收藏,并留下你的观点哦!