首页 > 其他分享 >js类型判断(实用,不拖拉)

js类型判断(实用,不拖拉)

时间:2024-10-22 16:17:20浏览次数:3  
标签:Object 拖拉 object js 实用 toString typeof call prototype

本文介绍三种js类型判断方法。


一、typeof(有坑)

语法:typeof(表达式)、typeof 变量名

返回值:undefined/boolean/string/number/object/function/symbol/bigint

示例:

typeof undefined // undefined
typeof true // boolean
typeof '1' // string
typeof 1 // number
typeof null // object
typeof [] // object
typeof {} // object
typeof funcion(){} // function
typeof Symbol() // symbol
typeof 42n // bigint
...

缺点:  

1. typeof null为object(js历史bug)

2. typeof判断引用类型,除function会被识别出来之外,其余都识别为object

二、instanceof(有坑)

语法:实例对象 instanceof 构造函数

原理:检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上

返回值:true/false

示例:

[] instanceof Array   // true
const n1 = new Number(1) // 构造函数构建
n1 instanceof Number;  // true
const n2 = 1 // 语法糖构建
n2 instanceof Number;  // false
...

缺点:  

因为语法糖构建的变量没有确切的构造函数,instanceof检测不出来。

三、Object.prototype.toString.call()(无坑,推荐)

语法:Object.prototype.toString.call(xxx)

返回值:[object xxx]

示例:

Object.prototype.toString.call(1);  // [object Number]
Object.prototype.toString.call("abc"); // [object String]
Object.prototype.toString.call([])); // [object Array]
Object.prototype.toString.call({}); // [object Object]
Object.prototype.toString.call(true); // [object Boolean]
Object.prototype.toString.call(undefined); // [object Undefined]
Object.prototype.toString.call(null); // [object Null]
Object.prototype.toString.call(new Date()); // [object Date]
Object.prototype.toString.call(function(){}); // [object Function]
...

 - END -

感谢你花费宝贵的时间阅读本文,文章在撰写过程中难免有疏漏和错误,欢迎你在下方留言指出文章的不足之处;如果觉得这篇文章对你有用,也欢迎你点赞和留下你的评论哦。

标签:Object,拖拉,object,js,实用,toString,typeof,call,prototype
From: https://blog.csdn.net/qq_53971395/article/details/143158023

相关文章

  • 原生js实现列表内容向上滚动,列表内容向上轮播
    <divid="review_box"><ulid="conent1"><li>第一条内容</li><li>第二条内容</li><li>第三条内容</li><li>第四条内容</li><li>第五条内容</li>......
  • Qwik-能帮你移出项目中99%的JS代码
    本文分享自天翼云开发者社区《Qwik-能帮你移出项目中99%的JS代码》,作者:尹****勇什么是QwikQwik是一款全栈SSR框架,它号称 -能帮你移出项目中99%的JS代码-FCPFCP(FirstContentPaint首次内容绘制)测量 页面从开始加载到页面内容的任何部分在屏幕上完成渲染的时间现在基本......
  • 【开源免费】基于SpringBoot+Vue.JS读书笔记共享平台(JAVA毕业设计)
    本文项目编号T029,文末自助获取源码\color{red}{T029,文末自助获取源码}......
  • 【开源免费】基于SpringBoot+Vue.JS母婴商城系统 (JAVA毕业设计)
    本文项目编号T030,文末自助获取源码\color{red}{T030,文末自助获取源码}......
  • 基于Java+Jsp+Ssm+Mysql实现的零食商城系统功能设计与实现一
    一、前言介绍:1.1项目摘要随着电子商务的快速发展和消费者购物习惯的改变,线上购物已成为人们日常生活中不可或缺的一部分。零食作为日常生活中常见的消费品,其线上销售市场也呈现出快速增长的趋势。零食商城系统的设计与实现,旨在满足消费者对零食的多样化、个性化需求,提供......
  • 基于Java+Jsp+Ssm+Mysql实现的零食商城系统功能设计与实现二
    一、前言介绍:1.1项目摘要随着电子商务的快速发展和消费者购物习惯的改变,线上购物已成为人们日常生活中不可或缺的一部分。零食作为日常生活中常见的消费品,其线上销售市场也呈现出快速增长的趋势。零食商城系统的设计与实现,旨在满足消费者对零食的多样化、个性化需求,提供......
  • Nuxt.js 应用中的 build:manifest 事件钩子详解
    title:Nuxt.js应用中的build:manifest事件钩子详解date:2024/10/22updated:2024/10/22author:cmdragonexcerpt:build:manifest是Nuxt.js中的一个生命周期钩子,它在Vite和Webpack构建清单期间被调用。利用这个钩子,开发者可以自定义Nitro渲染在最终HTM......
  • Nuxt.js 应用中的 build:done 事件钩子详解
    title:Nuxt.js应用中的build:done事件钩子详解date:2024/10/21updated:2024/10/21author:cmdragonexcerpt:build:done是Nuxt.js的一个生命周期钩子,它在Nuxt应用的打包构建器完成运行后被调用。这个钩子为开发者提供了一个在构建过程结束后执行特定逻辑的......
  • Nuxt.js 应用中的 build:manifest 事件钩子详解
    title:Nuxt.js应用中的build:manifest事件钩子详解date:2024/10/22updated:2024/10/22author:cmdragonexcerpt:build:manifest是Nuxt.js中的一个生命周期钩子,它在Vite和Webpack构建清单期间被调用。利用这个钩子,开发者可以自定义Nitro渲染在最终HTML中的......
  • actix-web连接mysql并返回json
    toml[dependencies]actix-web="4"mysql="25.0.0"chrono="0.4"serde={version="1.0",features=["derive"]}rsuseactix_web::{get,post,web,App,HttpServer,Responder,HttpResponse,Error};......