1.包含:常规数字,NaN
2.NaN
1.NaN 和任何值(包括它自己)都不相等 NaN != NaN
2.isNaN 用来检测是否为非有效数字,如果不是有效数字返回true,是返回 false
3.在使用isNaN 在进行检测的时候,首先会验证检测的值,是否为数字类型,如果不是,先基于Number(0)方法将这个值转化为数字类型,把值转化为数字类型,然后进行检测

  1. console.log(111); //11
  2. // ==比较运算符
  3. console.log(11 == 22); //false
  4. console.log('aa' == NaN); //false
  5. console.log(11 == NaN); //false
  6. // NaA 和任何值(保护她自己)都不相等 NaN != NaA
  7. console.log(NaN != NaN); //True
  8. console.log(isNaN('11')); //false
  9. console.log(isNaN('ss')); //true
  10. console.log(isNaN(NaN)); //true

number
1.把其他类型转化为数字类型,只要字符串中包含一个非有效数字,则返回 NaN,其余字符串则转化为数字类型(第一个点除外)空字符串转化为0
2.把引用数据类型转化为数字,是先把他基于toString方法转化为字符串,然后在转化为数字 {},{name:
asas}>toString >object >转化数字为NaN
3.空数组转化为number为0,数组里面有一个数字照样输出,2个以上为fasle也是先将数组转化为字符串 [22,23]=>NaN

  1. console.log(Number('12.5')); //12.5
  2. console.log(Number('12.5px')); //NaN
  3. console.log(Number('12.4.2')); //NaN;
  4. console.log(Number('')); //0
  5. console.log(Number(false)) //0
  6. console.log(Number(true)); //1
  7. console.log(isNaN(true)); //false 先转化为数字1 然后做判断,是数字则返回false
  8. console.log(Number(undefined)); //NaN
  9. console.log(Number({
  10. name: '10'
  11. })); //NaN;
  12. console.log(Number([])); //0
  13. console.log(Number([11])); //11
  14. console.log(Number([11, 22])); //NaN

把其它类型转化为数字类型
Number([val])
-parseInt/parseFloat([val],[进制])也是转化为数字的方法,对于字符串来说,它是从左到右一次查找有效数字字符,只到遇到有效数字字符,停止查找,(不管后面是否还有有效数字字符,直到遇到非有效数字字符停止查找,然后返回有效数字

  1. console.log(Number([])); //0
  2. console.log(Number([11])); //11
  3. console.log(Number([11, 22])); //NaN
  4. console.log('----------------------------');
  5. var str1 = '12.5px';
  6. console.log(parseInt(str1)); //12
  7. console.log(parseFloat(str1)); //12.5
  8. console.log(parseInt('px')); //NaN

腾讯面试题

image.png