在我的JS数据类型(一)中介绍了7种JS的基本类型,这次就说一下JS几种数据类型的转换。

其他类型转String类型

方法一:
toString()方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//数字类型转String
(1).toSting() // "1" 如果写1.toString浏览器会报错,要写成这种形式或者
let n = 1
n.toString() // "1" 这是数字类型转String的两种写法。

//Boolean类型转String
true.toString() // "true" Boolean类型可以直接这样写。

//Object类型转String
let a = {}
a.toString() // "[object Object]" 这种方式不是我们想得到的结果,
// 我们想要得到的是 key 和 value 对应的字符串形式展现出来
// 但是JS中只有这一个办法可以将复杂类型转换为字符串
// 想要得到 key value 对应的形式 自己封装函数

null类型 和 undefined类型在方法一种会报错

方法二:
window.string()

1
2
3
4
5
window.string(1)         // "1"
window.string(true) // "true"
window.string(null) // "null"
window.string(undefined) // "undefined"
window.string({}) // "[object Object]"

window.string()方法可以将nullundefined类型转换为字符串。

方法三:
其他类型+’’

1
2
3
4
5
6
1 + ''         // "1"
true + '' // "true"
null + '' // "null"
undefined + '' // "undefined"
let a = {}
a + '' // "[object Object]"

方法三是方法二的简化版,浏览器会尝试把第一个值变为字符串与空字符串相加,得到的结果就是字符串,方法三在对nullundefined转换时不会报错。

将其他类型转换为Number类型

方法一:
Number():

1
2
3
4
5
Number('1')     // 得到数字 1 
Number('1.1') // 得到数字 1.1
Number('1.1e2') // 得到数字 110
Number('0b11') // 得到数字 3
Number('011') // 得到数字 11

这里要特别说明一下 为什么Number(011)得出的结果是11而不是9,这是JS的一个BUG。

方法二:
parseInt(string,radix)方法:

1
2
3
4
parseInt('1',10)     // 得到数字 1
parseInt('1.1',10) // 得到数字 1
parseInt('1.1e2',10) // 得到数字 1
parseInt('011',8) // 得到数字 9

parseInt()方法可以用来进制间的转换,同时可以将String转换成Number类型。

方法三:
parseFloat(value)

1
2
parseFloat('1.1')   // 得到数字 1.1
parseFloat('1.1e2') // 得到数字 110

parseFloat()方法可以用来转化小数。

方法四:
‘String’ - 0

1
2
3
'1' - 0        // 得到数字 1
'1.1' - 0 // 得到数字 1.1
'1.1e2' - 0 // 得到数字 110

方法五:

  • ‘String’
1
2
3
+'1'       // 得到数字 1
+'1.1' // 得到数字 1.1
+'1.1e2' // 得到数字 110

注意所有的将String方法转为Number类型必须是’数字’的形式如’1’、’1.1’、’1.1e2’,如果是其他字符串’true’、’a’、’b’,都会转换成NaN。

其他类型转Boolean类型

直接取反2次就可以将其他类型转换成Boolean类型

1
2
3
4
5
6
7
!!0          // false
!!NaN // false
!!null // false
!!undefined // false
!!'' // false
!!{} // true
!![] // true

只需记住6个假值分别是falsenullundefined''(空字符串)、NaN0,这6个假值,其他一切都是真值。


这就是我总结的几种类型之间的转换方法。

__END__

o0Chivas0o
文章作者:o0Chivas0o
文章出处JS数据类型(二)
作者签名:Rich ? DoSomethingLike() : DoSomethingNeed()
版权声明:文章除特别声明外,均采用 BY-NC-SA 许可协议,转载请注明出处