1. 数据类型
    基本数据类型:string、number、boolean、null、undefined、symbol
    引用数据类型:object、array、function
  2. typeof
    typeof操作符返回一个字符串,表示未经计算的操作数的类型
console.log(typeof 42);
// expected output: "number"console.log(typeof 'blubber');
// expected output: "string"console.log(typeof true);
// expected output: "boolean"console.log(typeof undeclaredVariable);
// expected output: "undefined"console.log(typeof null);
// expected output: "object"var a = Symbol(3)
console.log(typeof a);
// expected output: "symbol"var arr = [1,2,3]
console.log(typeof arr);
// expected output: "object"var obj = {a:1}
console.log(typeof obj);
// expected output: "object"var func = function () {console.log(1)
}
console.log(typeof func);
// expected output: "function"

typeof 可以正确检测出number、string、boolean、undefined、symbol、function,而null、array、object检测结果均为object,无法准确判断
3. instanceof
instanceof运算符用来检测构造函数的prototype属性是否出现在某个实例对象的原型链上

function Car(make, model, year) {this.make = make;this.model = model;this.year = year;
}
const auto = new Car('Honda', 'Accord', 1998);console.log(auto instanceof Car);
// expected output: trueconsole.log(auto instanceof Object);
// expected output: truevar num = 2
console.log(num instanceof Number);
// expected output: falsevar bool = false
console.log(bool instanceof Boolean);
// expected output: falsevar str = 'string1'
console.log(str instanceof String);
// expected output: falsevar temp = Symbol(2)
console.log(temp instanceof Symbol);
// expected output: falseconsole.log(null instanceof Object);
// expected output: false
console.log(undefined instanceof Object);
// expected output: falsevar arr = [1,2,3]
console.log(arr instanceof Array);
// expected output: truevar func = function() {console.log('123')}
console.log(func instanceof Function);
// expected output: truevar obj = {a:1}
console.log(obj instanceof Object);
// expected output: true

instanceof不能区别undefined和null,基本类型不用new声明的也检测不出来
4. constructor

function Car(make, model, year) {this.make = make;this.model = model;this.year = year;
}
const auto = new Car('Honda', 'Accord', 1998);console.log(auto.constructor ===  Car);
// expected output: truevar num = 2
console.log(num.constructor === Number);
// expected output: truevar bool = false
console.log(bool.constructor === Boolean);
// expected output: truevar str = 'string1'
console.log(str.constructor === String);
// expected output: truevar temp = Symbol(2)
console.log(temp.constructor === Symbol);
// expected output: true//console.log(null.constructor === Object);
// Error: Cannot read property 'constructor' of null//console.log(undefined.constructor === Object);
// Error: Cannot read property 'constructor' of undefinedvar arr = [1,2,3]
console.log(arr.constructor === Array);
// expected output: truevar func = function() {console.log('123')}
console.log(func.constructor === Function);
// expected output: truevar obj = {a:1}
console.log(obj.constructor === Object);
// expected output: true

constructor无法判断null和undefined
5. toString

function Car(make, model, year) {this.make = make;this.model = model;this.year = year;
}
const auto = new Car('Honda', 'Accord', 1998);console.log(Object.prototype.toString.call(auto));
// expected output: [object Object]var num = 2
console.log(Object.prototype.toString.call(num));
// expected output: [object Number]var bool = false
console.log(Object.prototype.toString.call(bool));
// expected output: [object Boolean]var str = 'string1'
console.log(Object.prototype.toString.call(str));
// expected output: [object String]var temp = Symbol(2)
console.log(Object.prototype.toString.call(temp));
// expected output: [object Symbol]console.log(Object.prototype.toString.call(null));
// expected output: [object Null]
console.log(Object.prototype.toString.call(undefined));
// expected output: [object Undefined]var arr = [1,2,3]
console.log(Object.prototype.toString.call(arr));
// expected output: [object Array]var func = function() {console.log('123')}
console.log(Object.prototype.toString.call(func));
// expected output: [object Function]var obj = {a:1}
console.log(Object.prototype.toString.call(obj));
// expected output: [object Object]

在任何值上调用object原生的toString()方法,都会返回一个[Object NativeConstructorName]格式的字符串
6. 常用判断

说明 方法
是否是数字 !isNaN(x)
是否是数组 Array.isArray(x)
是否是对象 Object.prototype.toString.call(xx) == ‘[Object Object]’
是否是空对象 JSON.stringify(xx) === ‘{}’
是否是null或undefined x == null
是否是null x === null
是否是undefined x === undefined

JavaScript数据数据类型判断相关推荐

  1. 浅玩JavaScript的数据类型判断

    前言 平常在需要进行类型判断时,随手拿起typeof就像手枪一样只管突突突...也没有仔细的去了解它的具体特性. 所以这里就利用空闲时间,来做一个较为详细的了解. 首先我们来全面看一遍typeof类型 ...

  2. JavaScript:数据类型判断的方法

    在JavaScript的基本数据类型中,还有两个特殊的类型:null和undefined,两者在布尔类型下都转义为false,看以下代码: console.log(null == undefined) ...

  3. 如何判断 JavaScript 的数据类型?

    如何判断 JavaScript 的数据类型? JavaScript 数据类型一共有 8 种: undefined.Null.Boolean.String.Symbol.Number.bigint.Ob ...

  4. 请你讲一讲JavaScript有哪些数据类型, 数据类型判断有哪些方法?

    js的8种数据类型 JavaScript中有8种数据类型, 包括基本数据类型(number, string, boolean, null, undefined, symbol, bigint)和引用数 ...

  5. JavaScript的数据类型---最全,最详细的数据类型,高级的工程师从数据类型开始

    一.基本数据类型 1.字符串数据类型      var hello="你好啊";      var hello='你好啊'; 示例: <script language=&qu ...

  6. js php 数据类型判断,【js基础】变量类型判断

    类型判断方法比较: 如果需要想详细了解,请看下文: 注:原封不动复制备份,防止删帖 在JavaScript中,有5种基本数据类型和1种复杂数据类型,基本数据类型有:Undefined, Null, B ...

  7. 深度解析javaScript常见数据类型检查校验

    前言 在JavaScript中,数据类型分为两大类,一种是基础数据类型,另一种则是复杂数据类型,又叫引用数据类型 基础数据类型:数字Number 字符串String 布尔Boolean Null Un ...

  8. 自学JavaScript Day03——数据类型

    自学JavaScript Day03--数据类型 简介 判断数据的类型 获取用户的输入 整合前两天的知识,练习一下吧! 关联Day02的知识点 简介 变量中存储的是什么样的数据,那么这个变量就是什么样 ...

  9. R语言数据格式转换函数、数据类型判断函数(numeric、character、vector、matrix、data.frame、factor、logical)、R语言数据格式类型转换

    R语言数据格式转换函数.数据类型判断函数(numeric数值.character字符串.vector向量.matrix矩阵.data.frame数据表.factor因子.logical逻辑).R语言数 ...

最新文章

  1. CentOS7下Docker Storage Pool扩容
  2. 算法:关于生成抽样随机数的这些算法
  3. java 动态拼接sql_动态SQL拼接工具类
  4. ubuntu检查端口是否开启_Ubuntu默认防火墙安装、启用、配置、端口、查看状态相关信息...
  5. 只用了2个周末,15岁中国学生斩获苹果WWDC奖学金
  6. 国际软件设计文档——概要设计说明书
  7. 【Python 标准库学习】日期和时间处理库 — datetime
  8. Android安装两次才成功,Android应用从市场安装完成打开与桌面打开,被启动两次的问题...
  9. HTTPS是对称加密还是非对称加密?
  10. UE4 编辑器模块引用,不影响打包处理
  11. 显示器/电脑屏幕字体出现重影
  12. 【有利可图网】PS实战教程26:1分钟搞定抠头发丝,超简单!
  13. 计算机监控系统检验规程,计算机监控系统护规程.doc
  14. 计算机排查方法,电脑主板故障排查方法
  15. 费马小定理【模板例题】
  16. 【Python机器学习预测分析算法实战五】最小角回归LARS
  17. BZOJ4605 : 崂山白花蛇草水
  18. 通过Python终端输入命令对NAO机器人进行实时控制
  19. SQL注入之利用DNS获取数据
  20. 梳理学习技术的脉络,助你一臂之力

热门文章

  1. 如何把握个股分时图的走势,在盘中捕捉涨停板?
  2. Word 自带公式转为mathtype格式
  3. react项目中在线预览附件
  4. nginx设置缓存时间
  5. 企业应用软件商转型互联网的123
  6. linux命令kill9的含义,[整理]kill -9的含义
  7. 高中计算机学ppt吗,1.1高中信息技术基础开学第一课.ppt
  8. matlab给图像加网格,matlab把图像进行网格化,或者是在图像中画网格
  9. Linux虚拟网络基础——veth pair
  10. 三月总结(1.布局)