• js 数据类型检测


    typeof返回可能的值(8种):

    string、boolean、number、object、function、undefined、null、symbol

    typeof是什么?

    typeof是一个一元操作符,并不是函数

    typeof用途

    typeof null =='object'  // true 
    typeof [] =='object' // true 
    typeof {} =='object' // true 
    在实际开发中,typeof 只适合用来检测元素是否为undefiend和function

    如何检测数据类型呢?
    使用Object.prototype.toString
    eg:Object.prototype.toString.call(x) === '[object Array]'


    js中toString和valueOf的区别?

    toString:将对象类型的原始值以字符串的形式返回

    valueOf:返回该对象类型的原始值

    在字符串运算里面优先调用toString()

    在数值运行里面优先调用valueOf()

    1:字符串加数字,数字就会转成字符串

    2:数字减字符串,字符串转成数字,如果字符串不是纯数字,就会转成NaN

    3:乘、除、大于、小于跟减法运算是一样的转换

     

    关于==

    1.undefined等于null

    2.字符串和数字比较时,字符串转数字

    3.数字为布尔比较时,布尔转数字

    4.字符串和布尔比较时,两者转数字

    console.log(undefined==null) //true

    console.log('0'==0) //true 字符串转数字

    console.log(0==false) //true 布尔转数字

    console.log('0'==false) //2个都转成数字

    console.log(null==false) //false

    console.log(undefined==false)//false

    引用类型转值类型

    (1).toString()方法。

    (2).valueOf()方法。

    类型转换

    要想弄清楚类型转换,必须要清楚数据类型有多少中
    数据类型:boolean,null,undefined,number,string,symbol,objec

    显式类型转换
    Number(),string(),boolean()

    number()
    原始类型转换
    数值:数值
    字符串:纯数值转为数值否则NaN,空的为0
    布尔值:true为1,false为0
    undefined:为NaN
    null:0
    对象类型转换
    先调用对象自身的valueOf方法,如果该方法返回原始类型的值(数值,字符串,布尔值,undefined,null),则直接对该值使用number()方法,不再进行后续操作
    如果valueOf方法返回的是复合类型的值,再调用对象自身的toString()方法,如果toString()返回的是原始类型的值,直接使用number方法
    如果toString方法返回的是复合类型的值,直接报错

    string()
    原始类型转换
    数值:相应的字符串
    字符串:原值
    布尔值:原值
    undefined:undefined
    null:null

    对象类型转换
    先调用toString方法,如果toString方法返回的是原始类型的值,则直接调用string(),不在进行后续操作
    如果toString方法返回的是复合类型的值,在调用valueOf方法,如果valueOf方法返回的是原始类型的值,则直接调用string方法
    如果valueOf返回的是复合类型的值,则直接报错

    boolean()
    原始类型转换
    undefiend,null,-0,+0,NaN,''都是转为false,其它的转为true

    隐式类型的转换
    什么触发隐式类型的转换
    四则运算,判断语句,native调用
    []+[] // ''
    []+{}
    {}+[]
    {}+{}
    true+true // 2
    1+{a:1} // 1[object Object] 首先{a:1}会被转换成一个字符串,然后字符串+数字,数字会被转成字符串



  • 相关阅读:
    Android消息推送完美方案[转]
    这一路走来
    【深入比较ThreadLocal模式与synchronized关键字】
    前端闭包 解决异步执行问题
    微信小程序在wxml双大括号中执行复杂运算
    腾讯云对象存储使用
    CSS中的flex布局
    docker基础学习笔记
    redis学习笔记
    微信小程序页面栈管理
  • 原文地址:https://www.cnblogs.com/liangshuang/p/8990703.html
Copyright © 2020-2023  润新知