JS-类型转换

  • 时间:2018-06-06 01:56 作者:WeB工程狮 来源:WeB工程狮 阅读:125
  • 扫一扫,手机访问
摘要:类型转换原始值转对象很简单,原始值通过调使用String(),Number(),Boolean()构造函数,转换为他们各自的包装对象。null和undefined属于例外,当将他们使用在期望是一个对象的地方都会造成一个类型错误(TypeErroe)异常,而不会执行正常的转换。对象转换相对复杂,下面具

类型转换

JS-类型转换

  • 原始值转对象很简单,原始值通过调使用String(),Number(),Boolean()构造函数,转换为他们各自的包装对象。nullundefined属于例外,当将他们使用在期望是一个对象的地方都会造成一个类型错误(TypeErroe)异常,而不会执行正常的转换。

  • 对象转换相对复杂,下面具体形容

    1、转换和相等性

    因为JS能做灵活的类型转换,因而其'=='相等运算符也随相等的含义灵活多变。例如:

  • JS-类型转换

  • 一个值转换为另一个值并不意味着两个值相等。比方,假如在期望用布尔值的地方用了undefined,它将会转换为false,但这并不表明undefined == false。JS运算符和语句期望用多样化的数据类型,并能相互转换。if语句将undefined转换为false,但==运算符从不试图将其操作数转换为布尔值。

  • 假如两个操作数的类型相同,则根据值进行比较,也就是相似于严格相等(===)进行比较。

  • 假如两个操作数类型不同,==相等操作符也可可以会认为他们相等。检测相等将会遵守如下规则和类型转换:

  • 1、假如一个值是null,另一个是undefined,则它们相等。

    2、假如一个值是数字,另一个是字符串,先将字符串转换为数字,而后用转换后的值进行比较。

    3、假如其中一个值是true,则将其转为1再进行比较。假如其中一个值是false,则将其转换为0再进行比较。

    4、假如一个值是对象,另一个值是数字或者字符串,则将对象转为原始值,而后再进行比较。对象通过toString()方法或者者valueOf()方法转换为原始值。JS语言核心的内置首先尝试用valueOf(),再尝试用toString(),除了日期类,日期类只是使用toString()转换。那些不是JS语言核心中的对象则通过各自的实现中定义的方法转换为原始值。

    5、其余不同类型之间的比较均不相等。

    2、显示类型转换

  • 做显示类型转换最简单的方法就是用Boolean()、Number()、String()或者Object()函数。当不通过new运算符调使用这些函数时,它们会作为类型转换函数:

JS-类型转换

  • ==需要注意的是,除了null或者undefined之外的任何值都具备toString()方法,这个方法执行结果通常和String()方法的返回结果一致。==

  • JS中某些运算符会做隐式的类型转换,又是使用户类型转换。

JS-类型转换

Number类定义的toString()方法能接收表示转换基数(radix)的可选参数,假如不指定此参数,转换规则将是基于十进制。

JS-类型转换

假如通过Number()转换函数传入一个字符串,它会试图将其转化为一个整数或者浮点数直接量,这个方法只可以基于十进制数进行转换,并且不可以出现非法的尾随字符。parseInt()函数和parseFloat()函数(它们是全局函数,不从属于任何类的方法)更加灵活。parseInt()能接收第二个可选参数,这个参数指定数字转换的基数,合法的取值范围是2-36。

JS-类型转换

  • 3、对象转换为原始值

  • 对象到布尔值的转换非常简单:所有对象(包括数组和函数)都转换为true。对于包装对象亦是如此:new Boolean(false)是一个对象而不是原始值,它江转换为true。

  • 对象到字符串和对象到数字的转换都是通过调使用带转换对象的一个方法来完成的。JS对象有两个不同的方法来执行转换:toString()和valueOf()

    toString():它的作使用是返回一个反应这个对象的字符串。默认的toString()方法并不会返回一个有趣的值。

    ({x:1}).toString() >> "[object Object]"

    很多类定义了更多特定版本的toString()方法。例如,数组类的toString()方法将每个数组元素转换为一个字符串,并在元素之间增加逗号后合并成结果字符串。函数类的toString()方法返回这个函数的实现定义表示方式。日期类定义的toString()方法返回了一个可读的日期和时间字符串。RegExp类定义的toString()方法将RegExp对象转换为表示正则表达式直接量的字符串。

JS-类型转换

  • valueOf():假如存在任意原始值,它就默认将对象转换为表示它的原始值。对象是复合值,而且大多数对象无法真正表示为一个原始值,因而默认valueOf()方法简单地返回对象本身,而不是返回一个原始值。数组、函数和正则表达式简单地继承了这个默认方法,调使用这些类型的实例的valueOf()方法只是简单返回对象本身。日期则返回对应毫秒数。

    3..1、JS中对象到字符串的转换经过了如下这些步骤:

  • 假如对象具备toString()方法,则调使用这个方法。假如他返回一个原始值,JS将这个原始值转换为字符串,并返回这个字符串结果。

  • 假如对象没有toString()方法,或者这个方法并不返回一个原始值,那么JS会调使用valueOf()方法。假如存在这个方法,则JS调使用它。假如返回值是原始值,JS将这个值转换为字符串,并返回这个字符串结果。

  • 否则,JS无法从toString()或者valueOf()取得一个原始值,因而这时它将抛出一个类型错误异常。

    3.2、在对象到数字的转换过程中,JS做了同样的事情,只是它会首先尝试用valueOf()方法:

  • 假如对象具备valueOf()方法,后者返回一个原始值,则JS将这个原始值转换为数字返回

  • 否则,假如对象具备toString()方法,返回一个原始值,则JS将其转换并返回

  • 否则,JS抛出一个类型异常错误。

  • 全部评论(0)
最新发布的资讯信息
【系统环境|】2019蚂蚁金服面试总结(Java方向)(2019-04-18 16:19)
【系统环境|】notepad++ 三位数字正则替换规则(2019-04-12 23:02)
【系统环境|服务器应用】网络工程师跨交换机的Vlan配置与管理知识(2019-03-26 02:14)
【系统环境|服务器应用】最小化的定制版linux系统:CoreOS(2019-03-26 02:14)
【系统环境|服务器应用】分布式系统面试题:分布式事务处理方案?(2019-03-26 02:13)
【系统环境|服务器应用】带着网关去旅行(系列二):防止vps上ssh端口被恶意扫描(2019-03-26 02:13)
【系统环境|服务器应用】美团iOS面试总结(2019-03-26 02:13)
【系统环境|服务器应用】百度iOS面试总结(2019-03-26 02:13)
【系统环境|服务器应用】Java大佬之学习历程(三)(2019-03-26 02:13)
【系统环境|服务器应用】Android面试集锦系列(38)——在项目中使用AsyncTask会有什么问题吗?(2019-03-26 02:13)
手机二维码手机访问领取大礼包
返回顶部