笔试时经常会考到不同类型的值加减法问题,每次都很头大,于是抽空总结一下,如有问题请私戳哦~~
- 加法运算中其中一方为字符串,那么就会把另一方也转换为字符串
- 加法运算没有字符串时,那么会将它转换为数字,不能转换时为NAN
- 减法运算中,都会转换成数字,不能转换时为NAN
但是第二条,我不是很理解到底该怎么转,下边是列举的一些常见情况,不全面勿喷哦~
-
数字与字符串相加结果是字符串
let n = 1 + "1";
console.log(n, typeof n); // 11 string
-
数字字符串与数字相减 数字字符串会变成数字,结果就是数值了
let n = "1" - 1;
console.log(n, typeof n); // 0 'number'
-
非数值字符串与数字相减 结果是NaN
let n = "true" - 1;
console.log(n, typeof n); // NaN 'number'
-
与数字、布尔值相加减,true转化为1,false转化为0
let n = true - 1;
let m = true + true;
console.log(n, typeof n); // 0 'number'
console.log(m, typeof m); // 2 'number'
-
与字符串相加,布尔值转化为字符串
let m = true + "1";
console.log(m, typeof m); // true1 string
-
与数字字符串相减,布尔值转化为数字
let n = true - "0";
console.log(n, typeof n); // 1 'number'
-
数字(字符串)与对象相加,转化成字符串
console.log({} + 1); //[object Object]1
console.log({} - 1); //NaN
-
数字(字符串)与数组相加,转化成字符串
console.log([] + 1); //1
console.log([] - 1); //-1
总结
减法的结果类型基本都变成了number,要么直接是某数值,要么就是NaN;加法只要有一方是字符串,结果就是字符串;布尔值相加减,结果是number。