【ECMAScript系列 6.0】 : 强制类型转换

168 阅读3分钟

强制类型转换

1.转换为字符串类型

  • toString()
    • 不会影响原变量
    • Number和Boolean可以用这个转换
    • null和undefined这两个值没有toString()方法
    • 变量名称.toString()的方式前面不能是常量, 因为常量不能被改变
let value = 123;
console.log(value); 
// 在谷歌浏览器的控制台中是Number类型是蓝色的

// 以下代码的含义: 将value变量中存储的数据拷贝一份, 然后将拷贝的数据转换为字符串之后返回
let str = value.toString();
console.log(str); 
// 在谷歌浏览器的控制台中是String类型是灰色的

// 注意点: 不能使用常量直接调用toString方法, 因为常量是不能改变的
let str2 = 123.toString();
  • String(常量or变量);
    • 对于null和undefined,它会将 null 直接转换为 "null"。将 undefined 直接转换为 "undefined"
    • 对于Number和Boolean而言,实际上就是调用toString()方法
    • 可以用常量是因为根据传入的值重新生成一个新的值, 并不是修改原有的值
  • 变量or常量 + " " / 变量or常量 + ''
    • 本质其实就是调用String()函数
let str = 123 + '';
console.log(str);  >>'123'
console.log(typeof str);   >>String

2.转换为数值类型

  • String >> 数值

    • 如果字符串中都是数值, 那么就正常转换
    • 如果字符串是一个空串" " / "", 那么转换之后是0
    • 如果字符串中不仅仅是数字, 那么转换之后是NaN
  • Boolean >> 数值

    • true转换之后是1
    • false转换之后是0
  • undefined >> 数值

    • 转换之后是NaN
  • null >> 数值

    • 转换之后是0

    • 空字符串/false/null转换之后都是0,字符串中不仅仅是数字/undefined转换之后是NaN,其它的正常转换

  • 转换方法

    • Number(常量or变量);
    let str = "123";
    console.log(str);   >>"123"
    console.log(typeof str);   >>String
    let num = Number(str);   
    console.log(num);   >>123
    console.log(typeof num);   >>Number
    
    • 通过数学运算中的+号和-号来转换

      • 虽然通过+/-都可以将其它类型转换为数值类型, 但是-会改变数值的正负性

      • 本质上就是调用了Number函数

    let str = "123";
    let num = +str;
    let num = -str;
    
    • parseInt(需要转换的字符串)/parseFloat(需要转换的字符串)

      • 从左至右的提取数值, 一旦遇到非数值就会立即停止,如果还没有提取到数值, 那么就返回NaN

      • parseInt/parseFloat都会将传入的数据当做字符串来处理

    let str = "3.14px";
    let num = parseFloat(str);
    console.log(num);   >>3.14
    console.log(typeof num);   >>Number
    
    let value = true;
    let num = parseInt(value); // parseInt("true");
    console.log(num);   >>NaN
    console.log(typeof num);   >>Number
    

3.转换为布尔类型

  • String >> 布尔
    • 字符串中有内容为true, 字符串中没有内容为false
  • Number >> 布尔
    • 只有数值是0才会转换为false, 其它的都会转换为true
    • 如果是NaN也会转换为false(在JavaScript中NaN属于Number类型)
  • undefined >> 布尔
    • 转换为false
  • null >> 布尔
    • 转换为false
  • 空字符串/0/NaN/undefined/null 会转换成false, 其它的都是true
  • 方法:Boolean(常量or变量)
let num = NaN;
console.log(typeof num);   >>number
let flag = Boolean(num);   
console.log(flag);   >>false
console.log(typeof flag);   >>boolean