JavaScript中的类型转换机制可以分为隐式类型转换和显式类型转换两种。
隐式类型转换
当JavaScript在运行时需要将某个类型的值转换为另一个类型时,就会进行隐式类型转换。以下是一些常见的隐式类型转换情况:
字符串与数字之间的隐式类型转换
当字符串和数字进行运算时,JavaScript会将字符串自动转换为数字类型。
console.log(1 + '2'); // "12"
console.log('2' * 2); // 4
布尔值与数字之间的隐式类型转换
布尔值在进行运算时也会被自动转换为数字类型。
console.log(true + 1); // 2
console.log(false + 1); // 1
字符串、数字和布尔值之间的隐式类型转换
字符串、数字和布尔值在进行运算时也会被自动转换为布尔值。
console.log(''); // false
console.log(0); // false
console.log(NaN); // false
console.log(undefined); // false
console.log(null); // false
console.log('hello'); // true
console.log(1); // true
console.log(true); // true
显式类型转换
显式类型转换是通过一些内置函数来将一个类型的值转换为另一个类型。以下是一些常见的显式类型转换函数:
String()
String()函数可以将任何类型的值转换为字符串类型。
console.log(String(123)); // "123"
console.log(String(true)); // "true"
console.log(String(null)); // "null"
console.log(String(undefined)); // "undefined"
Number()
Number()函数可以将任何类型的值转换为数字类型。
console.log(Number('123')); // 123
console.log(Number('12.34')); // 12.34
console.log(Number(true)); // 1
console.log(Number(false)); // 0
console.log(Number(null)); // 0
console.log(Number(undefined)); // NaN
Boolean()
Boolean()函数可以将任何类型的值转换为布尔值类型。
console.log(Boolean('hello')); // true
console.log(Boolean(123)); // true
console.log(Boolean(null)); // false
console.log(Boolean(undefined)); // false
console.log(Boolean(0)); // false
parseInt()
parseInt()函数可以将字符串类型的值转换为整数类型。注意,parseInt()函数只能将字符串的前面部分转换为整数,如果字符串的第一个字符不是数字或正负号,则会返回NaN。
console.log(parseInt('123')); // 123
console.log(parseInt('12.34')); // 12
console.log(parseInt('hello')); // NaN
console.log(parseInt('123hello')); // 123
parseFloat()
parseFloat()函数可以将字符串类型的值转换为浮点数类型。
console.log(parseFloat('12.34')); // 12.34
console.log(parseFloat('hello')); // NaN