Number 数据类型转化 NaN 函数isNaN

Number

console.log(1 / 0); /*js中可以使用0做分母,但是结果是 Infinity(无穷数字)*/
console.log(-1 / 0); //就是负无穷

var a = 0.1 + 0.2;
console.log(a); //0.30000000000000004
console.log(a == .3); //返回false 不要这样做比较

var nu = '下' - 5;
console.log(nu, typeof nu);// NaN "number" nu为NaN不是一个数字,做的减法运算本来想得到一个数字但是没办法转化为一个数字,智能返回一个NaN,但是NaN的数据类型是number;

- 特殊 NaN

1.跟谁都不相等,包括它自己 
2.只要有NaN参与的运算结果都是NaN
3.NaN的typeof返回的是number
var nu = '下' - 5;
        console.log(nu + 5); //NaN
        console.log(NaN == NaN); //false

        /*
        1.跟谁都不相等,包括它自己
        2.只要有NaN参与的运算结果都是NaN
        3.NaN的typeof返回的是number
  */

 isNaN

   判断一个数(变量)是不是 不是一个数字 若果是返回false ,如说不是一个数字返回true

   isNaN本身不判断,它的内部用Number()方进行判断,如果Number能成功转化成数字,就返回false,否则就返回true

console.log(isNaN('10')); // false
console.log(isNaN('10px')); // true
console.log(isNaN('')); // false
console.log(isNaN('  ')); // false
console.log(isNaN(NaN)); // true

console.log(isNaN(true)); // false
console.log(isNaN(false)); // false
console.log(isNaN(null)); // false
console.log(isNaN(undefined)); // true

Number的强制数据类型转换 

三种 :Number() parentInt() parentFloat()

  1. Number() 作用 : 可以将任何变量转化为数字,不会改变原来的数据类型。只有能转成功或不能转成功之分,转成功就是数字,转不成功就是NaN。

// 1、字符串如果全是数字(包括小数点)转成数字;如果有不是数字的,转成NaN,空字符串和空格转成0
// 2、true转成1, false转成0
// 3、数字简单的返回
// 4、null转成0
// 5、undefined转成NaN
// 6、对象一般返回NaN,一般不用来转对象

var a = '10';
var b = Number(a);
console.log(b, typeof b); // 10 'number'
console.log(a, typeof a);

console.log(Number('12px')); // NaN
console.log(Number('')); // 0
console.log(Number('     ')); // 0

console.log(Number(10)); // 10

console.log(Number(true)); // 1
console.log(Number(false)); // 0
console.log(Number(null)); // 0
console.log(Number(undefined)); // NaN

console.log(Number({})); // NaN
console.log(Number([1, 2, 3])); // NaN
2、parseInt和parseFloat
  • parseInt(变量); 转整数,parseInt还有第二个参数进制,一般加上这个进制,防止浏览器的误判

  • parseFloat(变量); 转小数,没有第二个参数。认别一个小数点 (无第二个参数)

  • 规则:从左向右,一位一位的看,如果是数字,提出来,如果不是数字,到此为止

console.log(Number('12.34万')); // NaN

console.log(parseInt('12.34万')); // 12
console.log(parseInt('34ab56')); // 34
console.log(parseInt('a34ab56')); // NaN
console.log(parseInt('    34ab56')); // 34

console.log(parseFloat('12.34万')); // 12.34
console.log(parseFloat('12.3.4万')); // 12.3

// ----------------------------
console.log(parseInt('070', 10)); // 70
原文地址:https://www.cnblogs.com/ximenchuifa/p/13392373.html