zoukankan      html  css  js  c++  java
  • javascript数据类型判断及数据隐式和显示转换

    数据类型判断

    数据类型有 number  string  boolean  null  undefined  function object 这些,那如何去判断数据对应的是哪种类型呢

    typeof可以判断对应数据类型  写法: typeof data 或者 typeof(data) , 一般习惯写后面这种

    返回值有 number string boolean object undefined function 这些

    代码如下:

    console.log(typeof(123)) //number
    console.log(typeof('true')) //string
    console.log(typeof(true))  //boolean
    console.log(typeof(null))  //object
    console.log(typeof(undefined)) //undefined
    console.log(typeof({})) //object
    console.log(typeof([])) //object
    console.log(typeof(NaN)) //number
    console.log(typeof(function(){})) //function
    console.log(typeof(a)) //undefined a未定义也不会报错

    其中对于数组和对象无法区分,可以用 instanceof 去判断

    console.log([] instanceof Array)  // true
    console.log({} instanceof Array)  // false

    如果只用其中一种方法就可以判断,则需要通过 toString() 方法,对 对象原型调用 toString()方法,通过改变this指向来获得对应的类型,如下

    console.log(Object.prototype.toString.call('123')) //[object String]
    console.log(Object.prototype.toString.call({})) //[object Object]
    console.log(Object.prototype.toString.call([])) //[object Array]
    console.log(Object.prototype.toString.call(123)) //[object Number]
    console.log(Object.prototype.toString.call(true)) //[object Boolean]
    console.log(Object.prototype.toString.call(null)) //[object Null]

    但是对undefined类型会报错,所以undefined类型只有在typeof方法中才不会报错

    数据显示转换
    显示转换number, number转换有Number()  parseInt()  parseFloat() 方法

    console.log(Number('123')); //123
    console.log(Number(true)); //1
    console.log(Number(false)); //0
    console.log(Number(NaN)); //NaN
    console.log(Number('abc')); //NaN
    console.log(Number(undefined)); //NaN
    
    console.log(parseInt('123abc')) //123  只为变成整形,只看数字位,直到非数字位就截断
    console.log(parseInt('abc')) //NaN
    console.log(parseInt(true)) //NaN
    console.log(parseInt(10, 16)) //16  表示10为基底,这是16进制,转为10进制
    
    console.log(parseFloat('100.2')) //100.2  只为转换为浮点型
    console.log(parseFloat('100.2abc')) //100.2
    console.log(parseFloat('100.2.3')) //100.2

    其它

    String() 显示转换字符串
    Boolean() 显示转换布尔值
    toSting() 转换字符串  undefined和null不能用toString()

    var a = 10
    console.log(a.toString()) //123
    console.log(a.toString(2)) //1010 表示以a为基底,转为2进制
    console.log(a.toString(16)) //a 表示以a为基底,转为16进制

    数据隐式转换

    // isNaN()
    console.log(isNaN(123)) //false
    console.log(isNaN('123')) //false
    console.log(isNaN('abc')) //true   先隐式转换成Number类型
    
    // + - / % *
    console.log(+'123')  //123 number类型
    console.log(false < 1)  //true
    console.log(2 < 1 < 3) //true  2 < 1为false flase < 3为true
    console.log(2 < 3 < 1) //false 2 < 3为true  true < 1为false
    
    console.log(undefined < 0) //false
    console.log(undefined > 0) //false
    console.log(undefined == 0) //false
    console.log(null < 0) //false
    console.log(null > 0) //false
    console.log(null == 0) //false
    console.log(undefined == null) //true

    不发生隐式转换

    // === 全等  !== 全不等
    console.log('123' === 123)  //false

    end !!!

  • 相关阅读:
    【JAVASCRIPT】JS实现淘宝,百度评分功能
    【数据结构】链式线性表的几种常用用法
    【JAVASCRIPT】无刷新评论
    【JAVASCRIPT】表单序列化问题
    【JAVASCRIPT】如何不使用jquery函数和ajax框架实现ajax效果
    图灵北京作译者交流会
    是起点,而非终点——评《程序员的思维修炼》
    2011图灵新春特献
    图灵2011.01书讯
    图灵2010.12书讯
  • 原文地址:https://www.cnblogs.com/lyjfight/p/13306818.html
Copyright © 2011-2022 走看看