JS-数据类型转换

转换为字符串类型

  • 对于Number类型和Boolean类型来说, 可以通过 变量名称.toString()的方式来转换
let num = 123;                  
console.log(typeof num);        // number
let str1 = num.toString();
console.log(typeof str1);       // string

let value = true;
console.log(typeof value);      // boolean
let str2 = value.toString();
console.log(typeof str2);       // string
  • 通过String(常量or变量);转换为字符串
let value1 = undefined;
console.log(typeof value1);       // undefined
let str3 = String(value1);
console.log(typeof  str3);       // string 

let value2 = null;
console.log(typeof value2);     // object
let str4 = String(value2);
console.log(str4);                 // null
console.log(typeof  str4);       // string 

let num1 = 123;                  
console.log(typeof num1);        // number
let str5 = String(num1);
console.log(typeof str5);       // string

let value3 = true;
console.log(typeof value3);      // boolean
let str6 = value3.toString();
console.log(typeof str6);       // string
  • 通过 变量or常量 + “” / 变量or常量 + ''转换为字符串
let value4 = null;
let str7 = value4 + '';
console.log(typeof str7);       // string

let num2 = 123;
let str8 = num2 + "";
console.log(typeof str8);       // string

注意 :

  • 变量名称.toString()的方式前面不能是常量, 因为常量不能被改变
  • String(常量or变量), 因为是根据传入的值重新生成一个新的值, 并不是修改原有的值
  • +’'或者+""底层的本质其实就是调用String()函数

转换为数值类型

在JavaScript中如果想将以上的四种基本数据类型转换为数值类型, 常用的方法有三种

  • Number(常量or变量);
let str = '123p';
console.log(typeof str);     // str
let num = Number(str);
console.log(num);            // NaN
console.log(typeof num);     // number
  • 数学运算中的+号和-号来转换
    • 虽然通过+/-都可以将其它类型转换为数值类型, 但是-会改变数值的正负性
    • +/-底层本质上就是调用了Number函数
let str5 = '123';
let num5 = +str5;
console.log(num5);          // 123
console.log(typeof num5);   // number

let str6 = '123';
let num6 = -str6;
console.log(num6);          // -123
console.log(typeof num6);   // number

let str7 = 'null';
let num7 = -str7;
console.log(num7);          // NaN
console.log(typeof num7);   // number
  • parseInt(需要转换的字符串)/parseFloat(需要转换的字符串)
    • parseInt/parseFloat都会从左至右的提取数值, 一旦遇到非数值就会立即停止 , 停止的时候如果还没有提取到数值, 那么就返回NaN
    • parseInt/parseFloat都会将传入的数据当做字符串来处理
let num8 = parseInt('123')
console.log(num8);          // 123
console.log(typeof num8);   // number

let num9 = parseInt('123q')
console.log(num9);          // 123
console.log(typeof num9);   // number

let num10 = parseInt('123.4')
console.log(num10);          // 123
console.log(typeof num10);   // number

let num11 = parseFloat('123');
console.log(num11);          // 123
console.log(typeof num11);   // number

let num12 = parseFloat('123.4');
console.log(num12);          // 123.4
console.log(typeof num12);   // number

let num13 = parseFloat('123p.4');
console.log(num13);          // 123
console.log(typeof num13);   // number
String类型转换为数值类型
  • 如果字符串中都是数值, 那么就正常转换
  • 如果字符串是一个空串"“或者” ", 那么转换之后是0
  • 如果字符串中不仅仅是数字, 那么转换之后是NaN
let str = '123p';
console.log(typeof str);     // str
let num = Number(str);
console.log(num);            // NaN
console.log(typeof num);     // number

let str1 = '123';
console.log(typeof str1);  // string 
let num1 = Number(str1)
console.log(typeof num1);   // number
Boolean类型转换为数值类型
  • true转换之后是1
  • false转换之后是0
let bool1 = true;
let num14 = Number(bool1);
console.log(num14);            // 1
console.log(typeof num14);    // number

let bool1 = false;
let num15 = Number(bool1);
console.log(num15);            // 0
console.log(typeof num15);    // number
undefined类型转换为数值类型
  • 转换之后是NaN
let str2 = 'undefined';
let num2 = Number(str2);
console.log(num2);            // NaN
console.log(typeof num2);    // number
null类型转换为数值类型
  • 转换之后是0
let str3 = null;
let num3 = Number(str3);
console.log(num3);            // 0
console.log(typeof num3);    // number
注意
  • 如果字符串中没有数据, 那么转换的结果是0
  • 如果字符串中的数据不仅仅是数值, 那么转换的结果是NaN
  • 如果是布尔类型的true, 那么转换之后的结果是1
  • 如果是布尔类型的false, 那么转换之后的结果是0
  • 如果是空类型, 那么转换之后的结果是0
  • 如果是未定义类型, 那么转换之后的结果是NaN
总结 : 空字符串/false/null转换之后都是0 ; 字符串中不仅仅是数字/undefined转换之后是NaN ; 其它的正常转换

转换为布尔类型

在JavaScript中如果想将基本数据类型转换为布尔类型, 那么只需要调用Boolean(常量or变量)

String类型转换为布尔类型

只要字符串中有内容都会转换为true, 只有字符串中没有内容才会转换为false

// str => bool
let str1 = 'asd';
console.log(typeof str1);   // string
let bool5 = Boolean(str1);  
console.log(bool5);         // true
console.log(typeof bool5);   // boolean

let str2 = '   ';
console.log(typeof str2);   // string
let bool6 = Boolean(str2);  
console.log(bool6);         // true
console.log(typeof bool6);   // boolean

let str3 = '';
console.log(typeof str3);   // string
let bool7 = Boolean(str3);  
console.log(bool7);         // false
console.log(typeof bool7);   // boolean
将Number类型转换为布尔类型

只有数值是0才会转换为false, 其它的都会转换为true
如果是NaN也会转换为false

// num => bool
let num1 = 123;
console.log(typeof num1);  // number 
let bool1 = Boolean(num1);
console.log(bool1);         // true
console.log(typeof bool1);   // boolean

let num2 = 0;
console.log(typeof num2);   // number 
let bool2 = Boolean(num2);
console.log(bool2);         // false
console.log(typeof bool2);  // boolean

let num3 = NaN;
console.log(typeof num3);   // number
let bool3 = Boolean(num3);  
console.log(bool3);         // false
console.log(typeof bool3);   // boolean
将undefined类型转换为布尔类型

undefined会转换为false

// undefined => bool
let num4 = undefined;
console.log(typeof num4);   // undefined
let bool4 = Boolean(num4);  
console.log(bool4);         // false
console.log(typeof bool4);   // boolean
将null类型转换为布尔类型

null会转换为false

// null => bool
let str4 = null;
console.log(typeof str4);   // object
let bool8 = Boolean(str4);  
console.log(bool8);         // false
console.log(typeof bool8);   // boolean
总结 : 空字符串/0/NaN/undefined/null 会转换成false, 其它的都是true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值