今天参加了一场面试,结果凉凉,唉,知识点漏缺呀,快来看看你是否也会做错?
问题:声明一个函数,判断传入的参数是否是数字型?
1 function fn(val) { 2 if (val !== NaN) { 3 console.log("11"); 4 return false; 5 } else if (typeof val == "number") { 6 console.log("22"); 7 return true; 8 } else { 9 console.log("33"); 10 return false; 11 } 12 } 13 fn(NaN);
我没有考虑NaN的情况,这是知识点的漏洞。
NaN不会等于自身,比较特殊,也就是说当NaN === NaN时,为false,不会执行if中的语句。所以要写成不等于,且是不全等于。