JavaScript基础巩固系列——3种确定数据类型的方法
全手打原创,转载请标明出处:https://www.cnblogs.com/dreamsqin/p/13666885.html, 多谢,=。=~(如果对你有帮助的话请帮我点个赞啦)
重新学习JavaScript是因为当年转前端有点儿赶鸭子上架的意味,我一直在反思我的知识点总是很零散,不能在脑海中形成一个完整的体系,所以这次想通过再次学习将知识点都串联起来,结合日常开发的项目,达到温故而知新的效果。与此同时,总结一下我认为很重要但又被我遗漏的知识点~
JavaScript 有三种方法,可以确定一个值到底是什么类型:
typeof运算符
- 用法:
typeof [value]
- 返回值:number(数值)、string(字符串)、boolean(布尔值)、function(函数)、undefined(undefined)、object(对象)
- 特殊用法:用于检查没有声明的变量而不报错
- 例子:
typeof 123 // "number"
typeof '123' // "string"
typeof false // "boolean"
function f() {}
typeof f // "function"
typeof undefined // "undefined"
typeof v // "undefined"
typeof window // "object"
typeof {} // "object"
typeof [] // "object"
PS:typeof null
返回object
instanceof运算符
- 用法:
[A] instanceof [B]
,用来验证一个对象是否为指定的构造函数的实例 - 返回值:true、false
- 特殊用法:用于区分对象和数组
- 例子:
var o = {};
var a = [];
o instanceof Array // false
a instanceof Array // true
Object.prototype.toString方法
- 用法:
Object.prototype.toString.call(value)
,返回当前对象对应的字符串形式,默认情况下返回类型字符串"[object object]"
(第二个值表示该对象的构造函数) - 返回值:
"[object type]"
- 特殊用法:用于比
typeof
更精准的数据类型判断 - 例子:
//数值:返回[object Number]
//字符串:返回[object String]
//布尔值:返回[object Boolean]
//undefined:返回[object Undefined]
//null:返回[object Null]
//数组:返回[object Array]
//arguments 对象:返回[object Arguments]
//函数:返回[object Function]
Object.prototype.toString.call(Math) // "[object Math]"
//Error 对象:返回[object Error]
//Date 对象:返回[object Date]
//RegExp 对象:返回[object RegExp]
//其他对象:返回[object Object]
//一个比typeof运算符更准确的类型判断函数
var type = function (o){
var s = Object.prototype.toString.call(o);
return s.match(/\[object (.*?)\]/)[1].toLowerCase();
};
type({}); // "object"
type([]); // "array"
type(5); // "number"
type(null); // "null"
type(); // "undefined"
type(/abcd/); // "regex"
type(new Date()); // "date"
//专门判断某种类型数据的方法
['Null',
'Undefined',
'Object',
'Array',
'String',
'Number',
'Boolean',
'Function',
'RegExp'
].forEach(function (t) {
type['is' + t] = function (o) {
return type(o) === t.toLowerCase();
};
});
type.isObject({}) // true
type.isNumber(NaN) // true
type.isRegExp(/abc/) // true
参考资料
JavaScript 语言入门教程 :https://wangdoc.com/javascript/index.html