1.显示转换(强制转换)与隐式转换
1.1显示转换
常见的JavaScript强制转换示例。
(1) 一元加号+
、一元减号-
值是布尔值,true
将被转换为1
,false
将被转换为0
。
let a = "123";
let b = +a; // b的值为123,类型为Number
let b = -a; // b的值为-123,类型为Number
(2)Number()
函数
值是布尔值,true
将被转换为1
,false
将被转换为0
;如果值是null
,将被转换为0
;如果值是undefined
,将被转换为NaN
。
let a = "123";
let b = Number(a); // b的值为123,类型为Number
(3)parseInt()
和parseFloat()
函数:
parseInt()
函数用于将字符串转换为整数,parseFloat()
函数用于将字符串转换为浮点数。这两个函数都可以接受一个可选的基数参数,用于指定要解析的数字的基数(例如,二进制、八进制、十进制或十六进制)。
let a = "123.45";
let b = parseInt(a); // b的值为123,类型为Number
let c = parseFloat(a); // c的值为123.45,类型为Number
1.2隐式转换
隐式转换(也称为自动类型转换),编译器会自动选择一个适合的类型来保证运算的正确性。
let a = "5" + 5; // 结果为"55",字符串"5"被转换为数字5let a = true + 5; // 结果为6,布尔值true被转换为数字1
let b = false + 5; // 结果为5,布尔值false被转换为数字0let a = "5" + true; // 结果为"5true",布尔值true被转换为字符串"true"let a = {toString: () => "5"} + 5; // 结果为"55",对象被转换为字符串"5"
2.==与===区别
===
(全等):
===
操作符在比较两个值时,不仅会比较它们的值,还会比较它们的类型。
==
(等于): ==
操作符在比较两个值时,会进行类型转换,然后进行比较同一类型下值是否相等。
console.log("5" == 5); // true,因为"5"被转换为数字5
console.log("5" === 5); // false,因为"5"的类型是字符串,5的类型是数字,类型不同
console.log(null == undefined); // true,因为null和undefined在进行==比较时被认为是相等的
console.log(null === undefined); // false,因为null和undefined的类型不同