题目是这样的:
let result=100+true+21.2+null+undefined+"Tencent"+[]+null+9+false; //输出结果为"NaNTencentnull9false"
看着很复杂,实际上是很简单的基础知识,+号遇到字符串,则把非字符串转化为字符串再进行拼串,基于toString()函数;+号没有遇到字符串的话,那么两边都要转化为数字在进行运算,是基于Number()进行隐式转换的。
true是Boolean值,Number(true);输出1,100+true=101
101+21.2=122.2
122.2+null //输出122.2; Number(null) //输出0
122.2+undefined;//输出NaN undefined转化为数字为非法运算,输出NaN,既not a number
NaN+"Tencent"; //输出"NaNTencent" NaN转化为字符串为"NaN"
"NaNTencent"+[]; //输出"NaNTencent" []为空数组,转化为字符串为""
"NaNTencent" +null; //输出"NaNTencentnull" null转化为字符串为"null"
"NaNTencentnull" +9; //输出"NaNTencentnull9"
"NaNTencentnull9" +false; //输出"NaNTencentnull9false" false转化为字符串为"false"
js类型转换表
说到函数转字符串,试着用toString转化函数,输出了函数本身代码,也不知道是什么原理,求大佬教