likes
comments
collection
share

浅谈JavaScript中的数据类型转换

作者站长头像
站长
· 阅读数 20

前言

     在JavaScript中,数据类型转换是一种常见的操作,用于将一种数据类型转换为另一种数据类型。数据类型转换可以分为两大类:显式类型转换和隐式类型转换。

显式类型转换

这是由程序员明确指定的类型转换,通常使用JavaScript内置的类型转换函数或方法完成。

隐式类型转换

这是JavaScript自动执行的类型转换,通常发生在运算符两边的数据类型不匹配时。

正文

原始值转布尔 -- 显示转换 Boolean(value)

     我们来看看这三条数据,我们把Number数值转化成Boolean,最终的打印结果会是什么呢?

console.log(Boolean(1));
console.log(Boolean(0));
console.log(Boolean(-1));

浅谈JavaScript中的数据类型转换

我们可以看到无论是正数或者负数的打印内容都是true,只有参数为0时,打印false. 我们再来看看字符串

if(''){
    console.log('hello');
}else{
    console.log('false');
}

浅谈JavaScript中的数据类型转换

空字符时打印出的是false.

    if('a'){
    console.log('hello');
}else{
    console.log('false');
}

浅谈JavaScript中的数据类型转换

有字符时就会输出'hello',也就是说字符串转布尔值,当字符串为空时,判断为false,非空判断为true; 所以对于原始类型转布尔转换成boolean值 0 "" null undefined NaN 会是false

原始值转数字 -- 显示转换 Number(value)

console.log(Number('j'));
console.log(Number(null));
console.log(Number(undefined));
console.log(Number(NaN));
console.log(Number(true));

浅谈JavaScript中的数据类型转换

字符串转Number如果字符串包含除了数字之外的其他字符,转换通常会失败,结果是NaN,undefined,NaN都会转化成NaN,将空字符串""转换为数字,结果是0。如果字符串仅包含空白字符(如空格、制表符等),结果也将是0

原始值转字符串 -- 显示转换 String(value)

所有的原始值类型都有一个 toString() 方法,可以将值转换为字符串。我们也可以使用一元运算符进行转换。

let num = 123; 
let strNum = num + ''; 
console.log(strNum);
let bool = true; 
let strBool = bool + ''; 
console.log(strBool); 

浅谈JavaScript中的数据类型转换

原始值转对象 -- 显示转换 new Xxx()

原始数据类型转化成对象,可以通过各自的构造函数进行转换

let num = 123;
let numObj = new Number(num);
console.log(numObj);

let str = 'hello';
let strObj = new String(str); 
console.log(strObj);
let bool = true;
let boolObj = new Boolean(bool);
console.log(boolObj);

浅谈JavaScript中的数据类型转换

对象转原始值 -- 通常发生隐式转换

任何对象转布尔都是true

对象转字符串

我们来看看这一串代码

let obj = {
    valueOf: function() {
      return "valueOf result";
    },
    toString: function() {
      return "toString result";
    }
  };
  
  console.log(obj + '');
  console.log(String(obj));

我们在对象中写好了两个方法一个是valueOf,一个是toString,我们打印一下结果

浅谈JavaScript中的数据类型转换

第一个打印的是valueOf result,第二个是toString result,为什么会这样呢? 在第一条打印中我们是obj + ''对象加上了一个空字符串,在JavaScript中,当尝试将一个对象与字符串连接时,该对象会被隐式地转换成字符串。然后先调用valueOf看看返回的数据是否是一个原始数据类型,如果是,则返回那么这个返回值将被用作字符串连接。 在第二条打印中,当执行 String(obj),String 函数调用 ToString 操作。ToString 调用 obj.toString(),返回 "toString result"。这就不得不提及抽象操作ToString(ToString 是一种抽象操作,它将对象转换为字符串。对于对象,它通常会调用对象的 toString 方法。)

对象转数字

在JavaScript中,将对象转换为数字通常需要先将对象转换为字符串,然后再将字符串转换为数字。但是,直接将一个对象转换为数字通常会导致NaN,因为对象本身没有一个确定的数值表示。

但是我们可以使用一元运算符进行转换

let obj = { number: 123 };
let num = +obj.number;
console.log(num);

浅谈JavaScript中的数据类型转换

感谢大家阅读,若有不足,恳请指出!!!

浅谈JavaScript中的数据类型转换

转载自:https://juejin.cn/post/7392555617200341029
评论
请登录