JavaScript数据类型转换总结

    技术2026-10-03  5

    文章目录

    1. typeof 操作符2.转数值2.1 Number()函数的转化规则:2.2 parseInt()2.3 parseFloat() 3.转字符串3.1 toString()3.2 String() 4. 转布尔值 JavaScript中有7种数据类型: 6 种原始类型(简单类型):

    数值:Number:整数和小数字符串:String:字符组成的文本布尔:Boolean:true和false两个特定值Null:表示无值,即此处的值就是“无”的状态Undefined:表示“未定义”或不存在,即由于目前没有定义,所以此处暂时没有任何值著作权归作者所有。符号:Symbol (ECMAScript 6 新定义)

    1种引用类型(复杂类型):

    Object Object本质上是由一组无序的键值对组成的.

    1. typeof 操作符

    使用 typeof 操作符可以检测基本数据类型,对一个值使用 typeof 操作符可能会返回下列某个字符串:

    ‘undefined’ —— 这个值未定义‘boolean’ —— 这个值是布尔值‘Stinrg’ —— 这个是是字符串‘number’ —— 这个值是数值‘Object’ —— 这个值是对象‘function’ —— 这个值是函数

    一些使用 typeof 操作符的例子:

    var a; var obj = { name:"why", age:18 } console.log(typeof 'abcdef'); console.log(typeof obj); console.log(typeof 12); console.log(typeof a);

    打印的结果:

    2.转数值

    有3个函数可以把非数值转化为数值: Number, parseInt() , parseFloat(),第一个函数可以用于任何数据类型,二另外两个函数则专门用于把字符串转化为数.这三个函数对于同样的输入会有不同的返回结果.

    2.1 Number()函数的转化规则:

    Boolean ,false 转化为 0 , true 转化为 1;如果是数值,则只进行简单的传入和传出;null 转化为 0 ;undefined 返回 NaN如果是字符串,则遵循以下规则: 如果字符串中值包含数字(包括前面带正号或负号的情况),则转化为十进制.如果字符串中包含有效的浮点数,则会将其转化为对应的浮点数值如果字符串中包含有效的进制格式,例如 “0xf” ,则将其转换为相同大小的十进制数值。如果是空字符串,则转化为0如果字符串中包含上述格式以外的字符,则转为 NaN 如果是对象,则调用对象的valueOf()方法,然后依照前面的规则转换返回的值,如果转化的结果是 NaN ,则调用对象的 toString() 方法然后再依照前面的结果返回响应的值.

    使用Number 的例子:

    console.log(Number('hello world')); console.log(Number('')); console.log(Number('0000110')); console.log(Number(true));

    2.2 parseInt()

    在处理整数转换时更为常用。在转换是查看是否符合数值模式。 她 遵循的转化规则如下:

    如果在转换字符串的话,会忽略前面的空格,直到找到第一个非空格字符。如果第一个字符不是数字字符或负号后不是数字字符,就会返回NaN。如果是空字符串,就会返回NaN。如果第一个字符是数字字符,parseInt()会继续解析下去,直到解析完或遇到了一个非数字字符。因为小数点不是有效的数字字符,类似"22.5" 会被转换为22 。 -parseInt能解析不同进制的数字字符。因为javascript引擎不同,ECMAScript3和ECMAScript在解析八进制字符串时存在分歧,建议都加上进制参数。 console.log(parseInt('123asc')); //123 console.log(parseInt('')); //NaN console.log(parseInt('0xA')); //10(十进制数) console.log(parseInt(22.5)); //22 console.log(parseInt('070')); //56(八进制) console.log(parseInt('70')); //70(十进制数) console.log(parseInt('0xf')); //15

    在ECMAScript 3 JavaScript中,'070’被当成八进制字面量,因此转化后的十进制为56,而在ECMAScript 5 JavaScript中,parseInt()已经不具备解析八进制的能力,因此前面的0被认为是无效的,从而将这个值当成70,结果就得到十进制的70.

    为了消除在使用parseInt()函数时可能导致的困惑,可以为这个函数提供第二个参数,转化时使用基数(即多少进制),如果知道要解析的值是十六进制格式的字符串,那么指定基数16作为第二个参数,可以保证得到正确的结果,例:

    console.log(parseInt('0xAF',16)); //175

    实际上,如果指定了16作为第二个参数,字符串可以不带前面的0x,如下所示:

    console.log(parseInt('AF',16)); //175 console.log(parseInt('AF')); //NaN

    在上面的例子中,第一个转化成功了,第二个却失败了.差别在于第一个转换传入了技术,第二个没有传入技术,明确告诉了parseInt() 要解析一个十六进制格式的字符串,二第二个转换发现第一个字符不是数字字符,因此就自动终止了.

    指定基数会影响数值的输出结果:

    console.log(parseInt('10',2)); //2 console.log(parseInt('10',8)); //8 console.log(parseInt('10',10)); //10 console.log(parseInt('10',16)); //16

    2.3 parseFloat()

    字符串从头解析到尾,或忽略前面的空格,直到遇到第一个无效的浮点数字字符为止.第一个小数点有效,之后的小数点就无效,后面跟着的字符串将会被忽略。可以识别不同进制的浮点数值格式,但都是转换为十进制值,无第二个参数指定转换进制。十六进制的字符串始终会被转化为0。如果解析的是整数,没有小数点或是小数点后都是零,会返回整数。 console.log(parseFloat('123asc')); //123 console.log(parseFloat('')); //NaN console.log(parseFloat('0xA')); //0 console.log(parseFloat(22.5)); //22.5 console.log(parseFloat('22.5.344')); //22.5 console.log(parseFloat('098.034')); //90.034 console.log(parseFloat('2.12e10')); //21200000000

    3.转字符串

    要把一个值转为字符串有两种方法.第一种是使用几乎每个值都有的toString() 方法,这个方法唯一要做的就是返回相应值的字符串的表现.还有一个是 String() 方法.

    3.1 toString()

    看下面的例子:

    var age = 18; var strAge = age.toString(); var show = true; var strShow = show.toString(); console.log(strAge,strShow); //字符串18和字符串true

    数值,布尔值,对象和字符串(每个字符串也有一个toString 方法,返回该字符串的副本)都有toString()方法.但是 null 和 undefined 没有这个方法.

    多数情况下,调用toString() 方法不需要传递参数,但是,在调用数值的toString()方法的时候,可以传递一个参数,输出数值的基数.默认情况下,toString() 方法以十进制格式返回数值的字符串表示,而通过传递基数,toString() 方法可以输出十进制,八进制,十六进制,二进制乃至其他任何有效进制的数据,示例如下:

    var num = 10; console.log(num.toString()); //'10' console.log(num.toString(2)); //'1010' console.log(num.toString(8)); //'12' console.log(num.toString(10)); //'10' console.log(num.toString(16)); //'a'

    通过上面的实例,我们可以看出,通过指定基数,toString() 方法会改变输出的值,而数值10根据基数的不同,可以在输出的被转化为不同的数值格式.注意,在默认情况下输出的值与指定基数10 的结果是相同的.

    3.2 String()

    在不知道要转换的值是 null 或是 undefined 的情况下.还可以使用转型函数String(),这个函数能够将任意类型的值转化为字符串,String() 方法的转换遵循以下规则:

    如果值有toString() 方法,则会调用 toString() 方法;如果值是null, 则会返回 "null";如果值是undefined 则会返回"undefined"; 示例如下: var a = 10; var b = true; var c = null; var d ; console.log(String(a)); //'10' console.log(String(b)); //'true' console.log(String(c)); //'null' console.log(String(d)); //'undefined'

    4. 转布尔值

    没有toBoolean()这个方法,但有全局方法Boolean()。

    数据类型转为ture的值转为false的值BooleantruefalseString任何非空字符串“”(空字符串)Number任何非零数值(包括无穷大)0和NaNObject任何对象nullundefined不适用undefined

    总结:只有undefined,null, 0 ,空字符串,NaN 会转化为 false ,其余均为 true.

    Processed: 0.009, SQL: 9