JavaScript – 简述JS里的数据类型转换

我心飞翔 分类:javascript

一、任意类型值转为字符串( string )

说明:不涉及 symbol 类型

  1. 使用 toString()
类型 返回值 举例
数值(number) 相应的字符串 var a = 3; a.toString; // 返回 '3'
布尔(boolean) true转换为字符串 'true', false转换为字符串'false' var a= false; a.toString(); // 返回 'false'
null 报错 Uncaught TypeError: Cannot read property 'toString' of null
undefined 报错 Uncaught TypeError: Cannot read property 'toString' of undefined
对象-数组(object) 返回该数组的字符串形式 var x = [3,4,6]; x.toString(); // 返回 '3,4,6'
对象-非数组(object) 返回一个类型字符串: '[object,Object]' var x = {a: 1};x.toString(); // 返回 '[object,Object]'
  1. 加法运算符

如果一个运算子是字符串,另一个运算子是非字符串,这时加号运算符会尝试把非字符串会转成字符串,再连接在一起。如

image

  1. 使用 String()
类型 返回值 举例
数值(number) 相应的字符串 var a = 3; a.String; // 返回 '3'
布尔(boolean) true转换为字符串 'true', false转换为字符串'false' var a= false; a.String(); // 返回 'false'
null 返回null var a = null; String(a); // 返回'null'
undefined 返回undefined var a = undefined; String(a); // 返回'undefined'
对象-数组(object) 返回该数组的字符串形式 var x = [3,4,6]; x.String(); // 返回 '3,4,6'
对象-非数组(object) 返回一个类型字符串: '[object,Object]' var x = {a: 1};x.String(); // 返回 '[object,Object]'

二、任意类型值转为布尔( boolean)

说明: 不涉及 symbol 类型

  1. 使用 Boolean()

五个 falsy 值:0,NaN,null,undefined,''(空字符串)。
除以上五个 falsy 值返回 false 以外,所有数据类型值全部返回 true。

image

  1. 取反运算符(!)

对某一值接连前缀两个反运算符(!)相当于将其转为对应的布尔值,与 Boolean 函数的作用相同,此法较 Boolean()更为常用。

image

三、任意类型值转为数值( number)

说明:不涉及 symbol 类型

  1. 使用 Number()

image

  1. 使用 parseInt(): 用于将字符串转为整数

规则:

(1) 如果字符串头部有空格,空格会被自动去除。

(2) 如果 parseInt 的参数不是字符串,则会先转为字符串再转换。

(3) 字符串转为整数的时候,是一个个字符依次转换,如果遇到不能转为数字的字符,就不再进行下去,返回已经转好的部分。

(4) 如果字符串的第一个字符不能转化为数字(后面跟着数字的正负号除外),返回 NaN。

(5) 如果字符串以 0x 或 0X 开头,parseInt 会将其按照十六进制数解析;如果字符串以 0 开头,将其按照十进制解析。

image

  1. 使用 parseFloat(): 用于将一个字符串转为浮点数

规则:

(1) 如果字符串符合科学计数法,则会进行相应的转换。

(2) 如果字符串包含不能转为浮点数的字符,则不再进行往后转换,返回已经转好的部分。

(3) 会自动过滤字符串前导的空格。

(4) 如果参数不是字符串,或者字符串的第一个字符不能转化为浮点数,则返回 NaN。

(5) 上面代码中,尤其值得注意,parseFloat 会将空字符串转为 NaN。

image

  1. 减零运算(-0):任一值减 0 后可以得到相应的 number
  2. 加正号运算(+): 任一值前面加一个 + 后可以得到相应的 number

回复

我来回复
  • 暂无回复内容