使用typeof来判断数据类型

193 阅读2分钟

「这是我参与2022首次更文挑战的第16天,活动详情查看:2022首次更文挑战

Hope is a good thing, maybe the best of things. And no good thing ever dies—— 《The Shawshank Redemption》

前言

JavaScript本身一个弱类型的语言,它里面包含了好几种数据类型,在我们的开发过程中,难免要去判断一个变量(基础数据类型)的数据类型,有时候还需要去判断一个对象数据类型。

typeoof

我们可以使用 typeof 操作符来检测变量的数据类型,我们来看一些常见的例子:

字符串类型

var a = 'aaaa';
typeof a;  // 'string'

数字类型

var a = 66;
typeof a;  // 'number'

布尔类型

var a = false;
typeof a; // 'boolean'

undefined

在 JavaScript 中, undefined 是一个没有设置值的变量。

typeof 一个没有值的变量会返回 undefined

// 我们定义变量 qq,但是不给它设置任何值
var qq;
typeof qq // 'undefined'

null

在 JavaScript 中 null 表示 "什么都没有"。

null 是一个只有一个值的特殊类型。表示一个空对象引用

用 typeof 检测 null 返回是 object。

var qq = null;
typeof qq; // 'object'
  • nullundefined 的差异点:

都是原始类型,保存在栈中变量本地

  • undefined:是所有没有赋值变量的默认值,自动赋值。
  • null:主动释放一个变量引用的对象,表示一个变量不再指向任何对象地址。

null 的经常用法:

当使用完一个比较大的对象时,需要对其进行释放内存时,设置为 null。

函数类型

判断函数类型的,使用 typeof 可以确定函数类型

function fn() { console.log(1) }

typeof fn;  // 'function'

数组类型 和 对象类型

我们不能使用 typeof 来判断是否为数组,因为它始终返回 "object"

var arr = ["a", "b", "c"];
typeof arr;   // 返回 "object" 

var obj = {a: '1', b: 2};
typeof arr;  // 返回 "object" 

所以,如果使用 typeof ,也是不能确定变量的数据格式到底是数组还是对象。除此之外,我们可以使用 instanceof 来判断变量是数组或是对象。

var arr = ["a", "b", "c"];
arr instanceof Array;   // true

var obj = {a: '1', b: 2};
obj instanceof Object;  // true

另外,我们也是用 constructor 来判断 数组类型 和 对象类型。

var arr = ["a", "b", "c"];
arr.constructor(); // []

var obj = {a: '1', b: 2}
obj.constructor(); // {}

结语

如果这篇文章帮到了你,欢迎点赞👍和关注⭐️。

文章如有错误之处,希望在评论区指正🙏🙏

欢迎关注我的微信公众号,一起交流技术,微信搜索 🔍 :「 五十年以后