类型转换机制
js是弱类型语言,只有到运行期间才会确定当前类型
javascript
let x = y ? 1 : a;
上面代码中,x
的值在编译阶段是无法获取的,只有等到程序运行时才能知道,虽然变量的数据类型是不确定的,但是各种运算符对数据类型是有要求的,如果运算时的类型与预期不符合,就会触发类型转换机制
显式转换
通过内置函数直接转换
javascript
String(123); // '123'
Number('3.14'); // 3.14
Boolean(0); // false
parseInt('32a3') //32
隐式转换
发生在操作符或者表达式中,当运算符两边的操作数不是同一类型,则触发隐式转换
javascript
let a = 1 + '2'; // '12'
let b = [];
if (b.length) { // false
}
let c = true - 1; // 0
let d = {};
d + 'obj' // [object Object]obj'
常见触发场景
- 字符串拼接、模板字符串
- 比较运算(
==
、!=
、>
、<
) - 逻辑判断
if
、while
- 算术运算(
+
、-
、*
、/
、%
)
拓展
弱类型语言:
弱类型≠无类型,核心在于宽松的类型处理规则和隐式自动类型转换机制;设计初衷是为了降低入门门槛、简化开发流程和灵活应对动态内容;