js中的加减乘除本应是进行数学运算(如果遇到的值不是数字类型,也需要基于Number()方法把其转换为数字,在进行运算);但是js中加法有特殊情况:相加过程中遇到字符串直接变为字符串拼接
console.log(alert(1)); //undefined
//alert(1):执行浏览器内置的alert方法,执行方法的时候弹出一个“1”(方法的功能),此方法没有返回值(默认返回值undefined)
//把其他类型转换为数字有两大方法
//1、Number()按照浏览器底层机制,把其他数据类型转换为数字
//字符串:看是否含有非有效数字字符,包含结果就是NaN,'':0
//布尔:true:1;fase:0
//null:0
//undefined:NaN
//引用数据类型都要先转换为字符串再转换为数字
//{}/正则/函数: NaN
//[] -> '' -> 0
//['12'] -> '12' -> 12
//['12','23'] -> '12,23' -> NaN
...
//2、parseInt/parseFloat([val])遵循按照字符串从左到右查找机制(找有效数字),所以传递的值一定是字符串,不是也要转换为字符串再查找
parseInt(undefined) => parseInt('undefined') //NaN
parseInt('') //NaN 因为没找到有效数字
== VS ===
==:相等,数据类型不同,先转换为一样的再比较
===:绝对相等,必须类型和值都相等才为true
let i='10';
i=i+1; //=> '10'+1 => '101'
i+=1; //=> '101'
i++ ; //=> 11 //i++和以上两种不完全一样,它是纯粹的数学运算
//i++和++i都会是数学运算的累加1,区别是计算的顺序
let i=1;
5+(i++) //先算5+i=6;然后i再加1(2)
i=1;
5+(++i) //先i累加1(2),然后再拿累加后的结果去和5运算