当前位置: 首页 > news >正文

合肥网站优化公司企业管理软件管理系统

合肥网站优化公司,企业管理软件管理系统,完整网站源码下载,从事网站建设相信很多小伙伴在使用js的过程中,经常会需要对js的数据类型进行判断,而js中可以对数据类型进行判断的方法有很多种,最常见的有typeof、Object.prototype.toString、instanceof、constructor这四种,那么他们有什么区别呢&#xff1…

相信很多小伙伴在使用js的过程中,经常会需要对js的数据类型进行判断,而js中可以对数据类型进行判断的方法有很多种,最常见的有typeof、Object.prototype.toString、instanceof、constructor这四种,那么他们有什么区别呢?

目录

js数据类型

typeof

为啥typeof会将null判断为object

Object.prototype.toString

instanceof

constructor


js数据类型

先回顾下js的数据类型,js数据类型可分为两大类:

1.基本数据类型:又可以细分为七种:number string boolean undefined null bigint symbol

2.引用数据类型

typeof

基本数据类型均可判断(null除外,typeof会将null判断为object)

引用数据类型只可判断function,其他类型的引用数据均判断为object

//基本数据类型
et str='string'
console.log(typeof str) //stringlet num=1
console.log(typeof num) //numberlet ifRight=true
console.log(typeof ifRight) // booleanlet var1
console.log(typeof var1)  //undefinedlet var2=null
console.log(typeof var2)   //注意这里打印的是objectlet sym=Symbol('sym')
console.log(typeof sym) //symbollet bInt=BigInt('1234567890')
console.log(typeof bInt) //bigint//引用数据类型
function func(){return '3'}
console.log(typeof func) //functionlet arr=new Array()
console.log(typeof arr)    //object

为啥typeof会将null判断为object

之前有次面试,面试官提了一嘴,当时没答上来,后来查了查感觉还挺有意思,贴个当时找的图 

Object.prototype.toString

toString()是object的原型方法, 会返回一个格式为[object xxx]的内部属性,xxx就是对象的数据类型。

Object.prototype.toString可以判断所有的数据类型。

缺点:无法区分string(基本数据类型)和String(对象),number和Numbe等也同理

let str='string'
let str2=new String() //使用String构造函数创建let num=1
let ifRight=true
let var1
let var2=null
let sym=Symbol('sym')
let bInt=BigInt('1234567890')
function func(){return '3'}
let arr=new Array()console.log(Object.prototype.toString.call(str)) // [object String]
console.log(Object.prototype.toString.call(str2)) // [object String],和str的一样console.log(Object.prototype.toString.call(num)) // [object Number]
console.log(Object.prototype.toString.call(ifRight))  // [object Boolean]
console.log(Object.prototype.toString.call(var1))  // [object Undefined]
console.log(Object.prototype.toString.call(var2))  // [object Null]
console.log(Object.prototype.toString.call(sym))  // [object Symbol]
console.log(Object.prototype.toString.call(bInt))  // [object BigInt]
console.log(Object.prototype.toString.call(func))  // [object Function]
console.log(Object.prototype.toString.call(arr))  // [object Array]

instanceof

instanceof运算符用来检测构造函数的ptototype属性是否出现在某个实例对象的原型链上,

所以只能用来判断引用数据类型,不能对基本数据类型进行判断

let str1=new String()
let str='string' //基本数据类型string
let map =new Map()
let arr1=new Array()
function func(){return '3'}console.log(str1 instanceof String)  //true
console.log(str1 instanceof Object)  //trueconsole.log(str instanceof String)  //false 基本数据类型不可检测
console.log(str instanceof Object)  //false 基本数据类型不可检测console.log(map instanceof Map)      //true
console.log(arr1 instanceof Array)   //true
console.log(func instanceof Function) //true

缺点:当一个页面存在多个ifream(也就是存在多个全局变量window),此时instanceof的判断会被来自不同ifream的数据所干扰,导致数据不可信。

constructor

利用原型上的prototype.constructor指向实例的构造函数来进行判断

基本数据类型/引用数据类型均可判断

缺点:和Object.prototype.toString一样,无法区分string(基本数据类型)和String(对象),number和Numbe等也同理

let str1=new String()
let str='string'
let ifRight=true
let map =new Map()
let arr1=new Array()
function func(){return '3'}console.log(str1.constructor===String)  //true
console.log(str.constructor===String)  //true 基本数据也可判断,但是无法和String区分
console.log(str.constructor===Object)  //false
console.log(ifRight.constructor===Boolean)  //true 基本数据类型console.log(map.constructor===Map)     //true
console.log(arr1.constructor===Array)   //true
console.log(func.constructor===Function)  //true

http://www.mnyf.cn/news/15038.html

相关文章:

  • 做视频上传可以赚钱的网站推广关键词怎么设置
  • 莱州市做网站的公司打开免费百度啊
  • 公司需要网站 该怎么做做国外网站
  • 内蒙古微网站建设什么叫做优化
  • 西安国内做网站的公司有哪些今日特大新闻
  • 做公司网站哪家 上海网站推广优化价格
  • 网站的分析与设计服装市场调研报告
  • 免费网站后台模版怎么免费做网站
  • 独立站制作公司网站如何做seo排名
  • 网站策划常用软件seo站长工具平台
  • 怎么搜做传奇私服网站总出来网络营销师是做什么的
  • 做哪种网站赚钱常用的网络营销方法
  • 毕业设计旅游网站开发厦门seo招聘
  • wordpress购买阅读seo收费标准多少
  • dw内部网站链接怎么做郑州网站排名优化外包
  • 贵阳今天疫情最新通知seo关键词优化推广报价表
  • 无锡建设银行官网招聘网站产品推广方式有哪些
  • 网站 建设ppt模板seo咨询师
  • 切图做网站过时了吗口碑营销的优势有哪些
  • 用ps做网站广告图做百度推广销售怎么找客户
  • 网站建设与开发专业资源优化排名网站
  • 湖北建筑网排名优化工具
  • 博敏 网站开发如何去做网络营销
  • 做网站的是怎么赚钱百度账户安全中心
  • 广州疫情防控最新规定怎么优化推广自己的网站
  • 怎样进行网站建设app投放推广
  • 建设高校实验室教学网站的作用百度云网盘网页版
  • 厦门找一家做网站的公司好药品网络营销公司
  • 网站开发的优势怎么在百度上发表文章
  • 象山经济开发区建设有限公司网站长沙seo 优化选智投未来no1