「这是我参与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'
null与undefined的差异点:
都是原始类型,保存在栈中变量本地
- 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(); // {}
结语
如果这篇文章帮到了你,欢迎点赞👍和关注⭐️。
文章如有错误之处,希望在评论区指正🙏🙏
欢迎关注我的微信公众号,一起交流技术,微信搜索 🔍 :「 五十年以后 」