强制类型转换

325 阅读3分钟

这是我参与8月更文挑战的第31天,活动详情查看:8月更文挑战

前言

“八月的色彩是用金子铸就的,明亮而珍贵;八月的色彩是用阳光酿造的,芬芳而灿烂。”

未来的日子,愿你把自己调至最佳状态,缓缓努力,慢慢变好 Y(^o^)Y

本文接文章 【 类型转换基础 】。主要介绍强制类型转换。

显式强制类型转换

显式强制类型转换是那些显而易见的类型转换,很多类型转换都是属于这个行列。

字符串和数字之间的显式转换

字符串和数字之间的转换是通过Sting(..)Number(..) 这两个原生构造函数实现的。

var a= 12;
var b= String(a);
var c = '3.14';
var d = Number(c);

b  // "12"
d  // 3.14

Sting(..) 遵循前面的 ToSting 规则,将值转为字符串基本类型。Number(..)遵循前面的ToNumber 规则,将值转换为数字基本类型。

  • 日期显式转换为数字 我们常用的方法获取当前的时间戳。
    var timetamp = +new Date();
    

显式解析数字字符串

解析字符串中的数字和将字符串强制类型转换为数字的返回结果都是数字。但是解析和转换两者之间还是有明显的差异。

var a =  12;
var b = '12px';
Number(a);  // 12
parseInt(a); // 12

Number(b); // NaN
parseInt(b); // 12

解析允许字符串中含有非数字字符,解析按从左到右的顺序,如果遇到非数字字符就停止。而转换不允许出现非数字字符,否则会失败返回NaN

隐式强制类型转换

隐式强制类型转换指的是那些隐蔽的强制类型转换,副作用也不是很明显。换句话说,你自己觉得不够明显的强制类型转换都可以算作隐式强制类型转换

字符串和数字之间的隐式强制类型转换

var a = '12';
var b = '0';

var c = 12;
var d = 0;

a + b;  // "120"  + 运算属于字符串拼接
c + d; // 12  + 运算是数字运算

简单来说,如果 + 的其中一个操作数是字符串,则执行字符串拼接,否则执行数字加法。

隐式强制类型转换为布尔值

相对布尔值,数字和字符串操作中的隐式强制类型转换还算比较明显。

  • if(..)语句中的条件判断表达式。
  • for(.. ; ..; ..) 语句中的条件判断表达式(第二个)。
  • while(..)do..while(..) 循环中的条件判断表达式。
  • ? : 中的条件判断表达式
  • 逻辑运算符 ||(逻辑或) 和 &&(逻辑与)左边的操作数

以上情况,非布尔值会被隐式强制类型转换为布尔值。

结语

如果这篇文章帮到了你,欢迎点赞👍和关注⭐️。

文章如有错误之处,希望在评论区指正🙏🙏。