美文网首页
JS中数据类型分类

JS中数据类型分类

作者: 苏码码 | 来源:发表于2020-02-03 16:21 被阅读0次

    一、基本数据类型
    1、数字:number
    2、字符串:string
    3、布尔:boolean
    4、空对象指针:null
    5、未定义:undefined
    二、引用数据类型
    1、对象数据类型object
    (1)普通数据对象{}
    (2)数组对象[]
    (3)正则对象/^...?$/
    (4)函数对象 Math
    ....
    2、函数数据类型 function

    三、NaN和任何值包括子级都不相等:NaN!=NaN;所以不能用相等的方式判断是否为有效数字
    isNaN:检测一个值是否为非有效数字,如果不是有效数字返回true,如果是有效数字返回false
    console.log(isNaN(10)) => false
    console.log(isNaN('AA')) => true Number('AA') =>NaN
    console.log(isNaN('10')) => false Number('10') =>10
    在使用isNaN检测的时候,首先验证被检测的值是否为数字类型,如果不是,先基于Number()这个类型,把值转换成数字类型,再进行检测

    四、把其他类型转换成Number
    1、布尔转换成数字
    console.log(Number(true)) => 1
    console.log(Number(false)) => 0
    console.log(isNaN(true)) => false
    console.log(isNaN(false)) => false

    2、null => 0 undefined => NaN
    console.log(Number(null)) => 0
    console.log(Number(undefined)) => NaN
    console.log(isNaN(null)) => false
    console.log(isNaN(undefined)) => true
    3、把引用数据类型转换为Number,先把他基于toString方法转为字符串,然后再转成Number
    console.log(Number({name:'abc'})) => NaN
    // ({name:'abc'}).toString() => "[object Object]" => NaN
    console.log(Number({})) => NaN
    // ({}).toString() => "[object Object]" => NaN
    console.log(Number([])) => 0
    // ([]).toString() => '' => 0
    console.log(Number([12])) => 12
    // ([12]).toString() => '12' => 12
    console.log(Number([12,23])) => NaN
    ([12,23]).toString() => '12,23' => NaN

    4、parseInt() parseFloat(): 也是转换为数字的方法,对于字符串,他是从左到右依次查找有效数字,直到遇到非有效数字字符为止(不管后面是否还有有效数字,都不再查找),返回当前查找到的有效数字。
    let str = '12.5px'
    console.log(Number(str)) => NaN
    console.log(parseInt(str)) => 12
    console.log(parseFloat(str)) => 12.5
    console.log(parseFloat('width:12.5px')) => NaN
    5、== 进行比较

    五、字符串string数据类型
    1、其他类型转换成字符串
    [val].toString()
    let a = 12
    a.toString() => "12"
    (true).toString() => "true"
    null、undefined禁止直接toString() 报语法错误
    (null).toString() => Uncaught TypeError: Cannot read property 'toString' of null at <anonymous>:1:8
    普通对象.toString() 的结果是 "[object Object]",=> Object.prototype.toString()不是转换成字符串的,而是用来检测数据类型的
    ({name:'a'}).toString() => "[object Object]"
    2、字符串拼接转成字符串
    console.log('10'+10) => 1010
    let a = 10 + null + true + [] + undefined + "珠峰" + null + [] + 10 + false
    console.log(a) => 11undefined珠峰null10false
    let ab = 10 + null + true + [1] + undefined + "珠峰" + null + [] + 10 + false
    console.log(ab) => 111undefined珠峰null10false

    六、布尔数据类型boolean:true/false
    其他类型转为布尔类型Boolean([val]), !/!! ,判断条件
    只有null、''、0,undefined、NaN转成false,其他都是true
    console.log(Boolean([])) => true
    console.log(Boolean('')) => false
    console.log(Boolean(' ')) => true
    console.log(Boolean(undefined)) => false
    console.log(Boolean(null)) => false
    console.log(Boolean(NaN)) => false
    console.log(Boolean(0)) => false
    !:取反(先转成布尔,再取法)
    console.log(!1) => false
    console.log(!!1) => true
    七、null、undefined 都代表没有
    null:意料之中(一般开始不知道值,我么先收到设置为null,后续再赋操作值)
    let n = null; let m = 0;一般最好用null作为初始空值,因为0不是空值,他在栈内存中有自己的存储空间(占了位置)
    undefined:意料之外
    let num; // 创建一个变量没有赋值,默认值是undefined

    八、引用数据类型
    1、普通对象
    let person = {
    name:'武松',
    age:30,
    10:100
    }
    // 获取属性名对应属性值的方式
    -对象.属性名 属性名是字符串 ,属性名是数字不能用点语法
    -对象[属性名] 属性名是数字或者字符串格式
    -如果当前属性名不存在,则默认值是undefined
    console.log(person.name) => 武松
    console.log(person['age']) => 30
    console.log(person.sex) => undefined
    console.log(person[10]) => 100
    console.log(person.10) => 报预发错误
    属性删除
    -真删除:把属性删除
    delete person[1]
    -假删除:属性还在,值删除
    person.name = null

    九、堆栈


    屏幕快照 2020-02-03 下午4.19.46.png

    相关文章

      网友评论

          本文标题:JS中数据类型分类

          本文链接:https://www.haomeiwen.com/subject/liaqxhtx.html