1:NaN(Not a Number)

表示一个本来要返回数值的操作数没有返回数值的情况。在ECMAscript中,任何数除以0会返回NaN【ps:实际上只有0/0会返回NaN】,正(负)数除以0会返回Infinity(-infinity)。

NaN本身有两个非同寻常的特点,1、任何涉及NaN的操作(如:NaN/10)都会返回NaN,2、NaN与任何值都不想等包括NaN本身。

 console.log(NaN == NaN);
console.log(NaN === NaN);
#results
//false
//false

2、isNaN()函数

ECMAScript定义了isNaN()函数,函数接受一个参数,该参数可以是任何类型,用于判断传入的参数是否是“不是数值“。

 console.log(isNaN(NaN));
console.log(isNaN("10"));
console.log(isNaN(20));
console.log(isNaN("blue"));
console.log(isNaN(true));
#results
//true
//false
//false
//true
//false

3、数值转换

有3个函数可以将不是非数值转换为数值:Number()、parseInt()、parseFloat()。

Number():

转型函数Number()可以用于任何数据类型

Number()函数转换规则:

a.如果是数字值,就简单转入和返回;

b.如果是Boolean类型,true和false分别返回1和0;

c.如果是null值,返回0;

d.如果是undefined,返回NaN;

e.如果是字符串,遵循下列规则:

如果字符串只包含数字,则直接转换成十进制数值。(如果数字前有0会被忽略,如”0123“转换成123)。

如果字符串中包含有效的浮点数形式,将其转换成对应的浮点数值(前导0依然会被忽略)。

如果字符串中包含有效的十六进制格式,将其转换为相同大小的十进制整数值。

如果字符串为空(即不包含任何字符),则转换成0。

如果字符串是包含除上述格式以外的其他格式,则转换为NaN。

 console.log(Number("0x10"));
console.log(Number("10abc"));
console.log(Number(" "));
#results
//
//NaN
//

f.如果是对象,先调用对象的valueOf()方法,然后按照前面的规则返回,如果返回结果为NaN,则再调用对象的toString()方法,再按照前面的规则转换返回的字符串值。

另外两个函数则专门用于把字符串转换成数值,这3个函数对于同样的输入可能会有不同的返回结果。

parseInt():

parseInt()函数在转换字符串是,更多的是看其是否符合数字模式。它会忽略字符串前面的空白字符,直到找到第一个非空白字符;如果第一个字符不是数字或者负号,parseInt()会返回NaN,也就是说parseInt()转换空白字符会返回NaN(与Number()不同),parseFloat()也返回NaN。如果第一个是数字字符,parseInt()会继续解析直到最后一个字符或者遇到了一个非字符。

 console.log(parseInt("10abc"));
console.log(parseInt(" "));
console.log(parseInt("0xA"));
#results
//
//NaN
//

注意:ECMAScript 5 JavaScript引擎中,parseInt()不具备解析八进制的能力,parseInt('070')输出70!如果需要让parseInt()函数将传入的字符串转换为指定进制的数,可以为其传入第二个参数:转换时使用的技术(即多少进制)。不指定基数意味着让parseInt()自己决定如何让解析字符串,所以为了避免错误的解析,建议无论什么情况下都明确指定基数。

 console.log(parseInt("AF",16));
console.log(parseInt("10",10));
console.log(parseInt("10",10));
#results
//
//
//

parseFloat()函数与parseInt()函数类似,从第一个字符开始解析,一直到字符串末尾或者直到遇见第一个无效的浮点数字字符为止,解析时第一个小数点有效,第二个小数点无效。parseFloat()函数与parseInt()函数除小数点的区别外,第二个区别在于它始终会忽略前导的0,也就是说parseFloat()在解析十六进制数时会返回0.

 console.log(parseFloat("22.23.2"));
console.log(parseFloat("0x10"));
#results
// 22.23
//

Javascript Number类型常见迷惑点的更多相关文章

  1. Javascript中类型: undefined, number ,string ,object ,boolean

    var a1; var a2 = true;var a3 = 1;var a4 = "Hello";var a5 = new Object();var a6 = null;var ...

  2. javascript学习笔记2-typeof、Number类型、Boolean()

    1.typeof操作符 对一个值使用typeof操作符可能返回下列某个字符串 "undefined"——这个值未定义 "boolean"——这个值是布尔值 &q ...

  3. Javascript数据类型——number类型

            ECMAScript规范中使用IEEE754格式来表示整数和浮点数.支持十进制.八进制以及十六进制.有一点注意的是八进制数字在严格模式下是无效的,这可能会影响到程序的正常运行. 避免浮 ...

  4. JavaScript 数值Number类型详解

    Number 问题 如果下面的问题你都能回答对了吗? 0.1 + 0.2 == 0.3 成立吗? .e-5 表示多少? 怎么表示8进制? 怎么转换进制? 如何将字符串转换成数值或整数?反过来呢?十六进 ...

  5. 使用 JavaScript 中的变量、数据类型和运算符,计算出两个 number 类型的变量与一个 string 类型的变量的和,根据 string 类型处于运算符的不同位置得到不同的结果

    查看本章节 查看作业目录 需求说明: 使用 JavaScript 中的变量.数据类型和运算符,计算出两个 number 类型的变量与一个 string 类型的变量的和,根据 string 类型处于运算 ...

  6. js中Boolean类型和Number类型的一些常见方法

    Boolean类型 Boolean类型重写了valueOf() 方法, 返回基本布尔类型值true或false,重写了toString() 方法,返回基本字符串"true" 和 & ...

  7. 《JavaScript高级程序设计》读书笔记(三)基本概念第二小节 Number类型

    内容---语法 上一小节---数据类型 本小节 number类型---流程控制语句---理解函数 number类型--使用IEEE754格式来表示整数和浮点数值(双精度数值)--规定了数值字面量格式, ...

  8. javascript 操作符类型隐性转换

    javascript 操作符类型隐性转换 (一).一元操作符只能操作一个值的操作符叫做一元操作符1.递增和递减操作符a. 在应用于一个包含有效数字字符的字符串时,先将其转换为数字值,再执行加减1的操作 ...

  9. (Frontend Newbie)JavaScript基础之常见数据类型

    JavaScript中的数据类型分为两种,一种是简单数据类型,包括Undefined.Null.Boolean.Number和String,另一种是复杂数据类型,即Object,也可称作为引用类型. ...

随机推荐

  1. FFmpeg详解

    认识FFMPEG FFMPEG堪称自由软件中最完备的一套多媒体支持库,它几乎实现了所有当下常见的数据封装格式.多媒体传输协议以及音视频编解码器.因此,对于从事多媒体技术开发的工程师来说,深入研究FFM ...

  2. SQL判断是否存在符合某条件的记录

    IF EXISTS ( --判断是否存在合符条件的记录 ) FROM [DCL].[SecurityUser] WHERE [UserAccount] = @UserAccount ) BEGIN - ...

  3. 使用react-native做一个简单的应用-03欢迎界面

    Android和iOS的欢迎界面是不一样的,在iOS中有一个默认的欢迎界面,而Android则需要自己写.因此我就分开说一下这两个平台的欢迎界面的搭建.下面先看一下实现效果: Android: iOS ...

  4. MVC 全局异常过滤器HandleErrorAttribute

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  5. c#中的peek()方法

    peek()方法用来判断文件是否读取完成,如果完成的话,就会有一个返回值 - 1 所以可以用streamreader的对象sr调用peek()方法来判断文件流是否读取完成 ) { Console.Wr ...

  6. C++程序设计实践指导1.7超长数列中n个数排序改写要求实现

    改写要求1:将以上程序改写为适合超长整数 改写要求2:将以上程序改写为适合超长数列 改写要求3:将数列中指定位置m开始的n个结点重新按降序排序 改写要求4:输出指定位置m开始的n个结点的超长整数 #i ...

  7. [转]标准C++字符串string以及MFC6.0字符串CString的tokenize和split函数

    标准字符串的方法: /******************************************** the tokenize function for std::string ****** ...

  8. volatile 和const 变量的使用

    一.volatile定义: 一个定义为volatile的变量是说这变量可能会被意想不到的被改变,这样,有了volatile变量后,就提醒编译器就不会去假设这个变量的值了.精确地说就是,编译中的优化器在 ...

  9. BaseActivity的定义——作为所有Activity类的父类

    public abstract class BaseActivity extends AppCompatActivity implements View.OnClickListener { prote ...

  10. How to delete the icons of Win7 desktop shortcuts

    1. Copy the following bat code in txt type file, 2. save it as file extension type bat, run it as ad ...