js数据类型

复习
上回说过,javascript有七种数据类型,分别是:

  • number (小数和整数,如1,1.2324)
  • string (字符串,如 ‘hello’)
  • boolean (true和false)
  • symbol (es6新数据类型)
  • object (注意array和function都是object)
  • null (空值)
  • undefined (未定义) 那它们之间怎么转换呢?

    string

    可以使用obj.toString(),也可以加上一个空字符串或使用String函数,但obj.toString()有局限性。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    //number
    1.toString() //'1'

    //boolean
    b = true
    b.toString() //'true'
    b + '' //'true'

    //symbol 这个不用记
    s = Symbol('Symbol')
    s.toString() // "Symbol(symbol)"

    s + '' //Cannot convert a Symbol value to a string

    //null
    null.toString() // TypeError: Cannot read property 'to' of null

    null + '' // "null"

    //undefined
    undefined.toString() //Cannot read property 'toString' of undefined

    undefined + '' //"undefined"

    //object
    object = {name:'ycngu'} //"[object Object]"

    object + '' //"[object Object]"

boolean

Boolean函数用来返回布尔值
js中有五个值要记住,这五个值输入Boolean函数会返回false,称为falsy
(还有其他值,但记住这些就够了 )
分别是:

1
2
3
4
5
6
Boolean(null)
Boolean(undefined)
Boolean('') // 空字符串
Boolean(0) // number
Boolean(NaN) // number
//以上全部返回false

要注意的是,所有的Object都是true,包括function和array

1
2
3
4
5
6
7
function f(){}
arr = []
obj = {}
Boolean(f) //函数
Boolean(arr) //数组
Boolean(obj) //对象
//以上全部返回true

有一种偷懒方法可以方便的得知true和false

1
2
3
!! true // true
!! {} // true
!! 0 //false

number

四种方法

  • Number()
  • parseInt()
  • parseFloat()
  • 减去0
  • 取正 +’1.23’ // 1.23
    一般都是把string转为number
    下面说一下值得提的点
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    true + true // 等于2 !!!
    true * 3 // 等于3
    //也就是说 true和数字进行计算的时候等于1

    false + 3 //等于 3
    false * 3 //等于0
    //也就是说 false和数字进行计算的时候等于0

    undefined + 0 // NaN
    null + 1 // 1

    parseInt('123s') // 123
    parseInt('123lsdasd1213') // 123
    //parseInt函数有两个参数,一个是解析的值,另一个是确定几进制的值,默认是10进制,parseInt会尽力解析值,直到不能解析,所以这里得到的是 123