美文网首页
JavaScript-Number数据类型

JavaScript-Number数据类型

作者: 阿九是只大胖喵 | 来源:发表于2017-02-22 08:41 被阅读0次

Number数据类型是指正数、负数、零这一类的数据。但是在Number里面有一个特殊的数据,是NaN,它表示的是Not a Number,即,不是一个数字。
数字的声明可以如下:

var number = 10;
var number = 10.1;
var number = -10;
var number = 0;

而对于数据的比较,可以如下:

10 > 9;
10 == 10;
10 < 11;

其中,>, ==, <分别代表,大于,等于,小于。在JavaScript中 ==表示的是相等比较。
这里有一个注意点:
** NaN === NaN是不相等的,NaN和任何不相等 **
那如何比较NaN呢?如何判别一个数据是否是数字还是非数字呢?
可以使用JavaScript的一个函数:isNaN()

isNaN(): 检测一个值是否为有效数字,是有效数字,返回false。例如:

isNaN(10); // 返回false
isNaN("abc"); // 返回true

如果检测的类型不是number类型的,浏览器会默认的把它转化成number类型,然后在判断是否为有效数字。

console.log(isNaN('12'));
// -> false 会把'12'转化成number类型的 Number ==> Number("123")

这里的Number()是指 强制将其他的数据类型转化为number类型,要求如果是字符串,字符串中一定都需要是有数字才能转换,如果有非数字的字符,则无法转换。例如:

    console.log(Number('12.5px')); // NaN ->无法转换,有非数字字符px
    console.log(Number('12.5')); // 12.5
    console.log(Number("")); // 0 -> 空字符串转换结果为0

所以分析一下一行代码的情况:

console.log(isNaN("10")); // 返回false

首先,使用isNaN()判断时,它会先将非数字类型强制转换成数字类型,那么“10” --> Number("10"),由于"10"里没有非数字的字符,所以Number("10") --> 10。在对10进行isNaN()操作,显然10是一个数字,所以此时isNaN("10")返回false。


既然Number()是强制转换成数字,那是否有非强制的转换成数字的方法呢?
答案是有的,分别是parseInt()parseFloat()
它们俩的工作原理是:从左到右,一个个字符查找,把是数字的转化为有效的数字,中途如果遇到了一个非有效的数字,就不再继续查找了。
而区别是parseFloat()可以多识别一个小数点。

    console.log(parseInt('12px')); // 12
    console.log(parseInt('12px13')); // 12
    console.log(parseInt('javascript2017')); // NaN
    console.log(parseInt('12.5px')); // 12
    console.log(parseFloat('12.5px')); // 12.5

一道面试题:

    var val = Number('12px'); // 此时val为NaN
    if (val === 12) {
        console.log(12);
    } else if (val === NaN) {  // NaN和任何值不相等
        console.log(NaN);
    } else {
        console.log('以上都不成立'); // 输出
    }

解析:Number('12px'),由于Number()转换数字时,里面的数字只能全是数字字符,否则无法转换返回NaN,所以当传入"12px"时,返回NaN,此时val = NaN;这样第一个if条件不能通过。又因为NaN和任何值都不相等,包括NaN本身,所以 val === NaN不成立。所以输出以上都不成立。

相关文章

  • JavaScript-Number数据类型

    Number数据类型是指正数、负数、零这一类的数据。但是在Number里面有一个特殊的数据,是NaN,它表示的是N...

  • JavaScript-Number

    Number 。JavaScript不区分整型和浮点型,同一用Number表示 。123 ;//整数 0.456;...

  • JAVA 之路第一讲

    数据类型: 基础数据类型 包装器数据类型 引用数据类型 null 数据类型 基础数据类型: 整型 byte(字节型...

  • php 数据类型和数据类型转化

    一、数据类型 基础数据类型 复合数据类型 特殊数据类型 二、获取数据类型 三、打印数据类型和值 四、数据类型判断 ...

  • OC和C中的数据类型

    数据类型对比 C语言数据类型C语言数据类型 OC数据类型

  • JAVA 核心笔记 || [2] 数据类型

    JAVA数据类型分为两大数据类型: 1.内置数据类型2.引用数据类型 内置数据类型 引用数据类型 上篇 : 开篇 ...

  • 数据类型

    数据类型作用:数据类型不同,空间大小不同。 数据类型分类:基本数据类型、引用数据类型基本数据类型:整数型、浮点型、...

  • Java知识之数据类型

    Java数据类型图表## Java数据类型分为:### 基础数据类型 引用数据类型 null类型 基础数据类型分別...

  • JAVA基础第四天

    JAVA数据类型---布尔类型; 数据类型转换自动数据类型转换 强制数据类型转换

  • Java数据类型(慢慢积累,对于事物的理解也会不一样)

    Java的数据类型: 1. 内置数据类型(基本数据类型); 2. 引用数据类型; Java基本数据类型:(...

网友评论

      本文标题:JavaScript-Number数据类型

      本文链接:https://www.haomeiwen.com/subject/eoupwttx.html