Skip to content

类型转换机制

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'

常见触发场景

  • 字符串拼接、模板字符串
  • 比较运算(==!=><
  • 逻辑判断 ifwhile
  • 算术运算(+-*/%

拓展

弱类型语言:弱类型≠无类型,核心在于宽松的类型处理规则和隐式自动类型转换机制;设计初衷是为了降低入门门槛、简化开发流程和灵活应对动态内容;

Released under the MIT License.