详解JavaScript中双等号引起的隐性类型转换__第1页
详解JavaScript中双等号引起的隐性类型转换__第2页
详解JavaScript中双等号引起的隐性类型转换__第3页
详解JavaScript中双等号引起的隐性类型转换__第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、详解JavaScript中双等号引起的隐性类型转换_ 引子 if语句应当是程序员用的比较多的语句,许多时候都要进行if推断,if语句一般用双等号来推断前后两个元素是否是全都的,假如是全都,那么返回是true,然后执行下面的语句,否则,执行别的语句。本文所说的隐性类型的转换,说的是=引起的转换。举个简洁的例子,双等号不是全等号,全等号是“=”三个等号,语句1=1,那么一般状况下是前面的字符串”1“转换为数字1,然后进行比较。通过这个例子应当了解了什么是隐性类型的转换了吧! 隐性类型转换步骤 一、首先看双等号前后有没有NaN,假如存在NaN,一律返回false。 二、再看双等号前后有没有布尔,有布

2、尔就将布尔转换为数字。(false是0,true是1) 三、接着看双等号前后有没有字符串, 有三种状况: 1、对方是对象,对象用法toString()或者valueOf()进行转换; 2、对方是数字,字符串转数字;(前面已经举例) 3、对方是字符串,挺直比较; 4、其他返回false 四、假如是数字,对方是对象,对象取valueOf()或者toString()进行比较, 其他一律返回false 五、null, undefined不会进行类型转换, 但它们俩相等 上面的转换挨次肯定要_,面试的时候,常常会消失类型的问题。 .toString()方法和.valueOf()方法数值转换 通常状况下我

3、们认为,将一个对象转换为字符串要调用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

4、 = 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);/true var arr = ; arr.valueOf = f

5、unction () 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

6、; 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 2021 17:54:48 GMT+0800 (CST)1 console.log(date + 1);/Sun Apr 17 20

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论