持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第16天,点击查看活动详情
前言
在昨天的文章中,我浅析分享了JavaScript的数据类型,我们今天接着聊数据类型的判断
直接开始!ヾ(◍°∇°◍)ノ゙
类型转换
字符串
-
toString():注意,不可以转 null 和 underfined
-
String():都能转
let a = 'string';
let b = null;
let c = undefined;
console.log(a.toString()) // string
console.log(b.toString()) // error 报错
console.log(c.toString()) // error 报错
console.log(String(a)) // string
console.log(String(b)) // null
console.log(String(c)) // undefined
- 隐式转换:num + "",当 + 两边一个操作符是字符串类型,一个操作符是其它类型的时候,会先把其它类型转换成字符串再进行字符串拼接,返回字符串
let a = true;
let str = a + ''
console.log(str) // 'true'
数值
-
Number():可以把任意值转换成数值,如果要转换的字符串中有一个不是数值的字符,返回 NaN
-
parseInt()/parseFloat()
let a = '12.3px'
console.log(parseInt(a)); // 12
console.log(parseFloat(a)); // 12.3
let b = 'abc2.3'
console.log(parseInt(a)); // NaN
console.log(parseFloat(a)); // NaN
parseFloat 把字符串转换成浮点数
parseFloat 和 parseInt 非常相似,不同之处在与 parseFloat 会解析第一个. 遇到第二个.或者非数字结束
如果解析的内容里只有整数,解析成整数
- 隐式转换
let str = '123';
let num = str - 1;
console.log(num); // 122
isNaN() 函数用于判断是否是一个非数字类型
如果传入的参数是一个非数字类型,那么返回 true,否则返回 false
布尔
除了 0 ''(空字符串) null undefined NaN 会转换成 false 其它都会转换成 true
let a = ''
if (a) {
console.log('我们在代码里常见的判空[是否有值],就是依靠这个原理来判断的');
}
类型判断
typeof
对于原始数据类型,我们可以使用 typeof() 函数来判断他的数据类型。但他是没法用来区分引用数据类型的,因为所有的引用数据类型都会返回"object"。
instanceof
对于引用类型我们使用 instanceof 来进行类型判断。
let obj = {};
obj instanceof Object; // true
let arr = [];
arr instanceof Array; // true
通用的原型判断
- Object.prototype.toString.call()
在 javascript 中提供了另一种方法,可以通用的来判断原始数据类型和引用数据类型
let arr = [];
Object.prototype.toString.call(arr) === '[Object Array]'; // true
let func = () => {};
Object.prototype.toString.call(arr) === '[Object Function]'; // true
- constructor
constructor 作用和 instanceof 非常相似。
但 constructor 检测 Object 与 instanceof 不一样,还可以处理基本数据类型的检测