javaScript中的数据类型转换和判断

116 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第16天,点击查看活动详情

前言

在昨天的文章中,我浅析分享了JavaScript的数据类型,我们今天接着聊数据类型的判断

直接开始!ヾ(◍°∇°◍)ノ゙

类型转换

字符串

  • toString():注意,不可以转 null 和 underfined

  • String():都能转

image.png

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"。

image.png

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 不一样,还可以处理基本数据类型的检测

image.png