js隐式转换

64. 隐式转换

JavaScript 中,有一些情况下会进行隐式类型转换,即把一个值转换成另一个类型的值,以下是一些常见的隐式类型转换规则:

  1. 字符串拼接时,如果其中一个操作数为字符串,那么另一个操作数也会隐式转换成字符串。
console.log('1' + 2); // 输出: '12'
console.log(1 + '2'); // 输出: '12'
  1. 数字运算时,如果其中一个操作数不是数字类型,那么它会被隐式转换成数字类型。
Copy code
console.log(1 + true); // 输出: 2
console.log(1 + null); // 输出: 1
console.log(1 + undefined); // 输出: NaN
console.log('2' * '3'); // 输出: 6
  1. 比较运算时,如果其中一个操作数不是原始数据类型(字符串、数字、布尔值、nullundefined),那么它会被隐式转换成原始数据类型。
Copy code
console.log('2' > 1); // 输出: true
console.log('02' == 2); // 输出: true
console.log(true == 1); // 输出: true
console.log(false == 0); // 输出: true
console.log(null == undefined); // 输出: true
  1. 对象转换成原始数据类型时,会调用该对象的 valueOf()toString() 方法,如果这两个方法都没有返回原始数据类型的值,则会报错。
Copy code
console.log({} + 1); // 输出: '[object Object]1'
console.log({ valueOf: () => 2 } + 3); // 输出: 5
console.log({ toString: () => 'hello' } + 'world'); // 输出: 'helloworld'
console.log({} + []); // 输出: '[object Object]'

需要注意的是,隐式类型转换可能会导致意外的行为,因此在编写代码时应该尽量避免使用隐式类型转换,而是显式地进行类型转换。

你可能感兴趣的:(dairy,js,javascript,开发语言,ecmascript)