js的数据类型以及判断类型的四种方法

数据类型

基本数据类型

  1. null:表示定义为空
  2. undefined:表示未定义
  3. string :字符串
  4. number:特殊的两个符号:NANinfinity
    isNaN() 判断一个数是否为无穷大,NaN和任何数都不相等,包括它本身。
    parseInt(p1,p2):p1为字符串,如果不是则转换为字符串后再进行处理。参数p2不传或传0的时候默认按十进制处理;如果p2不在2-36之间,则结果为NaN;如果p1以0x/0X开头,则按16进制处理。
    sp:parseInt(‘231’,3) //2
    parseFloat(p1):只能传入一个参数
  5. boolean:null、’ '、0、undefined、NaN这五个值转化为Boolean均为 false,其余均为true。
  6. symbol:表示一个唯一的值
  7. bigInt

引用数据类型

  1. object
  2. function function既具有object的特点,也有function的特性,因此可以将其单独作为一种特殊的数据类型

补充:

  1. null和undefined的区别和关系undefined 、null 分别和其他任何值都不相等
undefined==null //true
undefined===null//false
  1. == 和 ===的区别和比较
    区别: == 类型不同时,先转换类型,在进行比较;
    === 类型和值完全相等才为true。
  2. == 的比较:
    对象 == 字符串 对象转化为字符串,先调用valueof获取原始值(一般为基本类型值),然后调用toString()。
    null == undefined
    NaN和谁都不相等
    剩下的情况都是先转换为数字,再进行比较。
  3. 其他数据转换为数字的方法
    强转换(基于底层机制):Number(val) ,val为字符串时必须保证全部为有效数字,否则返回NaN。
Number(true) //1
Number(false) //0
Number(null) //0
Number(undefined) //NaN

一些隐式转换(isNaN()、数学运算、字符串==数字)也是基于Number(val)完成的。
弱转换:parseInt 、parseFloat

四种判断类型的方法

1.typeof: 主要用来检测基本类型

console.log(typeof(1)); //"number"
console.log(typeof('123')); //"string"
console.log(typeof(undefined)); //"undefined"
console.log(typeof(null));  //"object"
console.log(typeof(Symbol())); //"symbol"
console.log(typeof(function(){
    
    })); //"function"
console.log(typeof([])); //"object"
console.log(typeof(new Date())); //"object"
console.log(typeof({
    
    }));//"object"

2.instanceof:主要用来检测当前对象是否是某个类的实例。所有出现在其原型链上的类,返回结果都为true。
该方法的缺陷在于可以通过__proto__ 或 prototype改变原型链的指向。不能检测基本数据类型。
3.constructor :和instanceof 类似,都是可以改变的
4.Object.prototype.toString.call或用**({}).toString.call**都可以返回当前实例所属类的信息。返回结果的格式是“[object 所属类信息]”

猜你喜欢

转载自blog.csdn.net/weixin_42123213/article/details/106447240