javaScript关于类型转换

1、类型转换web

js的取值很是灵活,好比:在js程序中,当js指望用一个布尔值的时候,你能够提供任意类型的值,js将根据须要自动转换类型。一样,其余类型也适用。js的类型转换分为三大类:算法

原始值到原始值的转换数组

原始值到对象的转换浏览器

对象到原始值的转换函数

一、原始值到原始值的转换对象

(1)原始值到原始值的转换相对简单,分为:字符串

全部原始值转换为布尔值string

全部原始值转换为字符串构造函数

全部原始值转换为数字程序

下表列出了原始值之间的转换:

以上,除了undefined、null、“”、0、-0、NaN转换为布尔值为false外,其余的值包括对象(数组、函数)都转为true。全部原始值转换为字符串的情形也以明肯定义。

转换为数字时,比较微妙,那些以数字表示的字符串能够直接转换为数字,也容许在开始和结尾处带有空格,能够直接转换为数字。

但凡在开头和结尾处,都含有任意非空格字符都不会转换为数字,都会转换为NaN。

(2)原始值之间经过什么方法转换呢

   一、Number(para)
                将任何形式的值转换成数字类型,转不成数字就是NaN,看起来不是数字的就转不成数字
                Number(null)     //0
            二、Boolean(para)
                将任何类型的值转换成布尔类型的值
                Boolean(null)  //false
            三、String(para)
                将任何形式的值都转换成字符串
                String(null)    //"null"
            四、parseInt(para,radix)   
                将数字、字符串转换成整数
                从数字位开始看,看到非数字位截止,返回数字位,转不成整数会返回NaN
                开头必须是数字,不然转换为NaN
                string:要转换的值
                radix:基低,
                        将string当作radix进制,再转换成10进制(其余进制转换成十进制)
            五、parseFloat(para)
                将para转换成浮点型(正常的数字)
                从数字位开始看,看到除了点以外的非数字位截止,返回数字位包括点
                开头必须是数字,不然是nan
                没有进制转换功能

    六、toString(radix)
                    demo.toString(8)
                    radix:以十进制为基低转换成目标进制 (把十进制转换成其余进制)
                null undefined没有toString()方法

经过以上方法进行的类型转换,也称为显示类型转换。

二、原始值到对象的转换

原始值到对象的转换也很是简单,原始值经过调用String()、Number()、Boolean()构造函数,转换为它们各自的包转对象。

null和undefined属于里外,它们不能转为对象类型,一般会发生TypeError的错误,不会执行正常的转换。

三、对象到原始值得转换

(1)对象到布尔值的转换很是简单:

  全部的对象(包括数组和函数)都转换为true。对于包装对象亦是如此:new Boolean(false)是一个对象而不是一个值,它将转换为true。

对象到字符串的转换和对象到数字的转换是经过调用toString()和valueOf()来实现的。这里提到的转换规则只适用于本地对象。对于宿主对象(web浏览器定义的对象)根据各自的算法能够转换为字符串和数字。

toString():将任何形式的值变成字符串。

valueOf():将对象转换为它表示的原始值。

(2)对象到字符串的转换要经历的步骤:

一、若是对象具备toString()方法,则调用这个方法。若是返回值是一个原始值,js会将它转换成字符串(这个值自己不是字符串的话)。

二、若是对象没有toString()方法,或者这个方法并不返回一个原始值,那么js会调用valueOf()方法。若是有这个方法的话,js会调用它。若是返回的是原始值,js会将这个值转换为字符串。(须要转的话)

三、不然,经过这俩个方法js都没法得到一个原始值的话,那么就会抛出一个类型错误异常。没法发生转换。

(3)对象到数字的转换过程:

跟对象转换为字符串不同,js会首先尝试使用valueOf()方法

一、若是对象具备valueOf()方法,就调用这个方法。若是返回结果是一个原始值,js会将它转换为数字。(这个值自己不是数字的话)

二、不然,若是对象具备totring()方法,就调用它。若是返回结果是一个原始值,js会将他转为数字。

相关文章
相关标签/搜索