js数据类型和判断数据类型的方法

这篇具有很好参考价值的文章主要介绍了js数据类型和判断数据类型的方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

js数据类型

1.基本数据类型(原始类型):

  • number
  • boolean
  • string
  • null:空对象
  • undefined:未定义
  • Symbol(es6新增):
    • 表示独一无二的值。
    • 为了解决对象实例新的方法与已有方法名冲突问题 。
    • 每个从 Symbol() 返回的 symbol 值都是唯一的,从而确保每个属性的名字都是独一无二的。
    • Symbol()函数前不能使用new命令:生成的 Symbol 是一个原始类型的值,不是对象,因此同时也不可添加属性。
  • BigInt :大整数

2.引用数据类型也称合成类型的值(多个原始类型的值的合成):object

  • 狭义上的对象:object
  • 函数:function
  • 数组:Array

typeof 判断数据类型

 console.log(typeof 1);// number
 console.log(typeof 'str');//string
 console.log(typeof true);// boolean
 let sym1 =Symbol();
 console.log(sym1)//symbol
 console.log(typeof undefined);//undefined
 console.log(typeof function(){});//function
 
 console.log(typeof {});//object
 console.log(typeof []);//object
 console.log(null);//object
  • 无法正确判断null:null二进制是4个0,typeof 判断3个0就是object了。
  • 无法正确判断Array:Array本质上是特殊的对象。

instanceof

console.log(1 instanceof number);//false
console.log('str' instanceof string);//false
console.log(true instanceof boolean);//false
console.log(sym1 instanceof Symbol);//false

console.log(function(){} instanceof Function);//true
console.log([] instanceof Array);//true
console.log({} instanceof Object);//true
console.log([] instanceof Object);//true
console.log(function(){} instanceof Object);//true
  • 只能用来判断两个对象是否属于实例关系, 而不能判断一个对象实例具体属于哪种类型。
  • instanceof只能正确判断引用数据类型,而不能判断基本数据类型。
  • null,underfined不能instanceof。
  • 主要作用就是判断Object.prototype.toString实现不了的情况。

constructor

console.log((1).constructor === Number); // true
console.log(('str').constructor === String); // true
console.log((true).constructor === Boolean); // true

console.log(([]).constructor === Array); // true
console.log((function() {}).constructor === Function); // true
console.log(({}).constructor === Object); // true
  • null、 undefined没有constructor,还有Symbol.constructor是Function。
  • string、number、boolean,js引擎在运行时,将其转化为object内置对象。
  • constructor在重写prototype时,constructor会丢失。

object.prototype.toString().call()文章来源地址https://www.toymoban.com/news/detail-723089.html

Object.prototype.toString.call(1) ;    // [object Number]
Object.prototype.toString.call('abc') ;   // [object String]
Object.prototype.toString.call(true) ; // [object Boolean]
Object.prototype.toString.call(Symbol()); //[object Symbol]
Object.prototype.toString.call(undefined) ; // [object Undefined]
Object.prototype.toString.call(null) ; // [object Null]

Object.prototype.toString.call(function(){}) ; // [object Function]
Object.prototype.toString.call([]) ; // [object Array]
Object.prototype.toString.call({}) ; // [object Object]

Object.prototype.toString.call([]).slice(8,-1);//Array
  • 本质是:用Object原型上的toString方法作用在传入的参数的上下文中(call将this 指向传入的参数)
  • toString是Object的原型方法,默认返回当前对象的[[Class]]
    • [[Class]] : 一个字符串值,表明了该对象的类型.
  • 检测方式相对来说又比较安全稳定,不容易被修改。除非去覆盖Object.prototype.toSring方法
  • 不用toString(),是因为 Array、function等为object的实例对象 重写了toString()方法,所以调用的是重写后的toString(),而不是Object上原型toString()。
  • 无法区分自定义对象类型:Symbol.toStringTag属性 可以定制[[Class]] 属性,也就是[object type] 中的type。

到了这里,关于js数据类型和判断数据类型的方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 日常开发小汇总(3)js类型判断

    1.typeof 能判断出字符串、数字、方法和undefined,array、null、object判断不出 instanceof 如 a instanceof b, 判断a的原型链上是否有b的原型 Object.getPrototypeOf() 返回参数的隐式原型 ,感觉有些鸡肋 Object.getPrototypeOf ([]) === Array.prototype //true Object.prototype.toString.call() 这里解释一下为什么Ob

    2024年02月09日
    浏览(39)
  • js编写一个函数判断所有数据类型

    一、编写一个函数判断所有数据类型的通用方法 1、typeof 在 JavaScript 里使用 typeof 来判断数据类型,只能区分基本类型,即 “number”,”string”,”undefined”,”boolean”,”object” 五种。 对于数组、对象来说,其关系错综复杂,使用 typeof 都会统一返回 “object” 字符串。

    2024年02月06日
    浏览(47)
  • 【C语言】判断字符类型的三种方法

    🦄 个人主页 :修修修也 🎏 所属专栏 :C语言 ⚙️ 操作环境 : Visual Studio 2022 目录 一.字符的类型分类 1.ASCII的定义:  2.ASCII的产生原因是: 3.ASCII的内容: 二.字符类型判断相关库函数 1.isdigit(),用于判断字符是否为数字。 2. isalpha(),用于判断字符是否为字母。 3. isalnum(),用

    2024年02月06日
    浏览(48)
  • js中如何判断一个变量的数据类型?

    前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发者,这里都将为你提供一个系统而又亲切的学习平台。在这个

    2024年02月09日
    浏览(40)
  • 【JavaScript】JS——Map数据类型

    存储键值对的对象。 能够记住键的原始插入顺序 任何值(对象或原始值)都可以作为键或值。 Map中的一个键 只能出现一次 ,新的值会覆盖旧的值。 迭代方式:for…of循环,返回一个 [key,value] 的数组。 键的相等:基于零值相等比较 Map与Object的比较 Map默认不包含任何键。

    2024年02月04日
    浏览(47)
  • JavaScript基础:js介绍、变量、数据类型以及类型转换

      目录 介绍 引入方式 内部方式 外部形式 注释和结束符 单行注释 多行注释 结束符 输入和输出 输出 输入 变量 声明 赋值 变量名命名规则 常量 数据类型 数值类型 字符串类型 布尔类型 undefined 类型转换 隐式转换 显式转换 Number 📖引入方式 JavaScript 程序不能独立运行

    2024年04月27日
    浏览(43)
  • JavaScript 类型判断及类型转换规则

    ✍创作者:全栈弄潮儿 🏡 个人主页: 全栈弄潮儿的个人主页 🏙️ 个人社区,欢迎你的加入:全栈弄潮儿的个人社区 📙 专栏地址,欢迎订阅:前端架构师之路 JavaScript 具有七种内置数据类型,它们分别是: null undefined boolean number string object symbol 其中,前面五种为基本类

    2024年01月19日
    浏览(38)
  • vue项目中,动态src引入图片,并且js根据文件名后缀,判断文件图片、视频、文档、pdf等类型的方法

    vue根据文件地址,获取后缀,根据后缀判断类型,然后根据类型动态展示不同类型的照片 1、处理后缀,根据后缀判断类型   2、根据返回的结果,直接将文件名命名为返回的结果,比如我有个图片类型的文件,经过上述的方法,返回的是image,那我直接要显示的图片名称就为

    2024年02月06日
    浏览(53)
  • JavaScript—数据类型、对象与构造方法

    JavaScript(简称“JS”) 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。JavaScript 基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式、声明式、函数式编程范式。 (1)脚本语言。js不编译,直接解释执行 (2)基于对象。JavaScript是一种基于对象的

    2024年02月10日
    浏览(39)
  • [从零开发JS应用] 如何在VScode中配置Javascript环境,常见的调试方法有哪些?

    记录环境配置:本文配置的环境主要针对单独JS文件的断点调试,主要是为了调试LeetCode里面的代码。 首先在官网下载对应的版本:https://nodejs.org/en/ 开始安装,可以自定义选择安装路径。 这里 选择Add Path ,系统变量会自动设置,但是用户变量并没有自动设置,需要的话可以

    2024年02月04日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包