js判断数据类型(全)

js判断数据类型(全)js 基本数据类型基本数据类型 String Number Boolean Undefined 未定义 null 空 symbol 表示独一无二的值 es6 引入的新的原始数据基本类型 Number 返回的特殊值 NaN 表示不是数值 用于表示本来要返回的数值的操作失败了 String 字符串是不可变的 一旦创建 值就不能变了 做的字符串操作是先对原字符串进行销毁再创建的 null null 值表示一个空对象指针 typeofnull 结果是 object symbol 符号 是原始值 且实例是唯一 不

js基本数据类型

  1. 基本数据类型:
    String、Number、Boolean、Undefined未定义、null空、symbol表示独一无二的值(es6引入的新的原始数据基本类型)。
    Number:返回的特殊值NaN,表示不是数值,用于表示本来要返回的数值的操作失败了。
    String:字符串是不可变的,一旦创建,值就不能变了。做的字符串操作是先对原字符串进行销毁再创建的。
    null:null值表示一个空对象指针,typeof null 结果是object。
    symbol(符号):是原始值,且实例是唯一、不可变的。用途是确保对象属性使用唯一标识符,不会发生属性冲突的危险。




  2. 引用类型:
    对象Object、数组Array、函数function
    函数存在三种常见的表达方式:
    1.函数声明 function sum(a,b){return a+b;}
    2.函数表达式 let sum = function(a,b){return a+b};
    3.箭头函数 let sum = (a,b)=>{return a+b;}




查看数据类型

  1. typeof
    typeof对于一些类型的处理只返回了处于其原型链最顶端的object类型。
    引用类型除了function返回function类型之外,其他都返回object。
    ○ NaN的数据类型是number
    ○ 数组(Array)和日期Date的数据类型是object
    ○ 不能检测出null,检测null的数据类型是object




  2. toString
    toString是Object的原型方法,调用该方法,返回当前对象的[[class]]。对于Object对象,直接调用toString()就可以返回,对于其他类型需要通过call()/apply()来调用才能返回正确的类型信息。
    使用:
    Object.prototype.toString.call(‘’ ‘); //[[Object String]]


  3. constructor
    无法判断null和undefined
    原型prototype的一个属性,函数被定义的时候,js引擎会为函数添加原型prototype,并且这个prototype种constructor属性指向函数应用。
    使用:
    [].constructor ==Array //true
    new Date().constructor == Date //true




  4. instanceof
    用来判断A是否为B的实例,A instanceof B,如果A是B的实例,返回true否则返回false。instanceof检测的是原型。
    在这里插入图片描述

    可以看出[] 的原型指向Array.prototype,间接指向Object.prototype,因此 [] instanceof Array 返回true,[] instanceof Object 也返回true。

    instanceof只能判断两个对象之间是否属于实例关系,不能判断一个对象属于哪种类型。

  5. typeof与instanceof的区别
    1.typeof返回字符串,也就是返回一个变量基本类型,instanceof返回布尔值
    2.instanceof相对来说,更适合判断:一个对象是否是一个构造函数的实例 。对于类型的判断存在不确定性:例如一个数组,它的_proto_原型执行Array.prototype,间接指向Object.prototype,因此 [] instanceof Array 返回true,[] instanceof Object 也返回true。
    3.typeof存在弊端,无法检测null类型和除了function以外的引用类型。


  6. 怎样判断是否是数组
    1. Array.isArray(arr)== true;
    2. arr.constructor()=== Array ;
    3. Object.prototype.toString.call(arr) === “[object Array]”

7.什么不直接Object.prototype.toString().call(arr),为什么要放在call()中

  1. 两个toString根本不是同个方法,object本身是一个构造函数,任意一个函数自身的toString方法都是继承自function构造函数。而Object原型下面的构造函数是返回对象内部的class值。
  2. 虽然Array也继承自Object,但js在Array.prototype上重写了toString,而我们通过toString.call(arr)实际上是通过原型链调用了。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/207086.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午2:28
下一篇 2026年3月19日 下午2:29


相关推荐

  • 安装部署openclaw并对接QQ机器人教程

    安装部署openclaw并对接QQ机器人教程

    2026年3月15日
    2
  • utf-8的中文是一个汉字占三个字节长度吗?

    utf-8的中文是一个汉字占三个字节长度吗?英文字母和中文汉字在不同字符集编码下的字节数英文字母:字节数:1;编码:GB2312字节数:1;编码:GBK字节数:1;编码:GB18030字节数:1;编码:ISO-8859-1字节数:1;编码:UTF-8字节数:4;编码:UTF-16字节数:2;编码:UTF-16BE字节数:2;编码:UTF-16LE中文汉字:字节数:2;编码:GB2312字节数:2;编…

    2022年6月26日
    29
  • 电脑图标变成空白图标怎么改回来_win7去掉桌面图标箭头

    电脑图标变成空白图标怎么改回来_win7去掉桌面图标箭头在桌面添加常用软件快捷图标对我们平时使用程序更加快捷,但在使用过程中难免会遇到一些棘手问题。近日有用户使用的win7操作系统发现桌面图标变异常,桌面软件图标都变得白色或未知图标(如下图所示),导致无法正常打开软件程序,出现这种现象很有可能是桌面图标缓存出现问题,下面是豆豆整理的各种纠结方法,如果用户也出现此种故障问题的话,不妨按照下面的某种方法来修复试试。解决方法一:首先在Win7桌面空白处点击鼠…

    2022年10月10日
    7
  • android gradle下载慢的解决方法

    android gradle下载慢的解决方法用androidstudio开发时,导入的项目经常会用到各种gradle版本,不知道为何androidstudio下载gradle极慢,最后总是失败。https://services.gradle.org/distributions/这是gradle各版本的官方网站。在这网站上下载速度很快。下载的文件放哪里呢?放到以下对应的目录中。C:\Users\admin\.gradle\wrapper\dists\gradle-6.7-all\cuy9mc7upwgwgeb72wkcrup

    2022年6月24日
    35
  • 推荐 5 款好用的REST API工具

    作者 | Marta Krzyk 首发|架构头条 译者 | 王强  策划 | 小智 市面上可用的 REST API 工具选项有很多,我们来看看其中一些开发人员最喜欢的工具…

    2021年6月22日
    122
  • LMDB使用说明_ldd教程

    LMDB使用说明_ldd教程http://rayz0620.github.io/2015/05/25/lmdb_in_caffe/官方的extract_feature.bin很好用,但是输出的特征是放在LMDB里的。以前嫌LMDB麻烦,一直都图方便直接用ImageDataLayer来读原始图像。这次绕不过去了,就顺便研究了一下Caffe对LMDB的使用,一些心得写下来和大家分享一下。提取特征的内容下一篇再写。

    2026年4月18日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号