内容
---语法 上一小节
---数据类型 本小节 number类型
---流程控制语句
---理解函数

number类型
--使用IEEE754格式来表示整数和浮点数值(双精度数值)
--规定了数值字面量格式,支持各种数值类型

55 //整数
070 //八进制56
079 //无效八进制,解析为79
08 //无效,解析为8

--八进制第一位必须是零(0),如果字面值超出范围,前导忽略作为十进制
--严格模式下,八进制无效,会抛出错误

--十六进制以 0x 开头,超出格式报错
--在算术计算时,统一用十进制数值
--+0和-0,支持保存,但是值认为相等

浮点数值
--数值中必须包含小数点,并且小数点之后必须有一位数字
--小数点之前可以没有数字,但是不推荐

var a = 1.1;
var b = 0.2;
var c = .3; //有效,不推荐

--浮点数值存储空间是整数值的两倍,因此ECMAScript会不失时机地将浮点数值转化为整数值
--小数点后没有任何数字,本身就是整数的浮点数(1.0)都会被转化成整数值

科学记数法
--e表示法,前面是一个数值,中间是一个e/E,后面是10的幂中的指数

var floatNum = 3.125e7; //31250000

--表示极小数时,ECMAScript默认会对小数点后带有6个零以上的浮点数值转化为e表示法

--浮点数值最高精度是17位小数,但是在进行算术计算时精度远远不如整数
--0.1+0.2 = 0.30000000000004
--所以不要测试某个特定的浮点数值,用于判断
--这是IEEE754数值的通病

数值范围
--最小数值保存在Number.MIN_VALUE中,在大多数浏览器下是5e-324
--最大数值保存在Number.MAX_VALUE中,在大多数浏览器下是1.7976931348623157e+308
--计算的数值超出数值范围,这个数值将被保存为特殊值 Infinity
--正数 Infinity, 负数 -Infinity
--访问Number.NEGATIVE_IFINNTY和Number.POSITIVE_IFINNTY可以得到负和正Infinity的值

NAN
--非数值(Not a Number)是一个特殊数值
--用于表示本来要返回数值的操作数未返回数值的情况(不会抛出错误)
--例如 a/0 返回NaN不会影响其他代码的执行
--涉及NaN的操作返回都是NaN
--NaN与任何值都不相等,包括自身 NaN==NaN//false
--isNaN()函数,用于判断是否 不是数值

isNaN(NaN); //true
isNaN(10); //false
isNaN("10"); //false
isNaN("blue");//true
isNaN(true); //false

--true->1,false->0,

--isNaN()也适用于对象,
--对象调用,会首先对用对象的valueOf()方法,判断返回值,如果不能
--则基于这个返回值再调用toString()方法,再检测返回值

数值转换
--Number(),parseInt(), parseFloat()
--Number()用于任何数据类型,后两个专门用于字符串

Number()下
--true->1,false->0
--数值,简单传入和返回
--null->0
--undefined->NaN
--字符串
----只包含数值(包括+,-)转化为十进制数(前导零会被忽略,所以没有八进制)
----有效浮点数(前导零会被忽略,所以没有八进制)
----有效十六进制,会转化为相同大小十进制
----空串-> 0
----还包含其他字符,则转化为NaN
----如果是对象,则先调用valueOf(),转化如果为NaN,再调用toString()
--对字符串转换比较复杂,不合理一般用parseInt,parseFloat代替

Number()等同于一元+操作符

Number("11"); //11
+("11"); //11
-("11"); //-11
+"11"; //11
-"11"; //-11

parseInt(string, radix)方法
--返回十进制数值
--忽略空格
--第一个不是负号或者数字字符 返回NaN
--直到解析完后续字符或者遇到了非数字字符
--小数点无效
--radix,可选(es5支持的参数)。表示要解析的数字的基数。该值介于 2 ~ 36 之间。
--(es5)八进制无效,(es3支持八进制)
--如果省略该参数或其值为 0,则数字将以 10 为基础来解析。
--如果它以 “0x” 或 “0X” 开头,将以 16 为基数。
--如果基数为16,则能识别 0x开头的 和不以0x开头的两种
--如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。

parseInt(" 1.1asd"); //1
parseInt("010"); //10
parseInt("010",6); //6
parseInt("0xa"); //10
parseInt("0xa",16); //10
parseInt("a",16); //10
parseInt("0xa",17); //0 x无法识别

请始终保持基数radix参数的书写,防止出错

拓展

["1", "2", "3"].map(parseInt)输出什么?

["1", "2", "3"].map(parseInt)等同于
["1","2","3"].map(function(ele,index){
  return parseInt(ele,index)
})

等于调用了三次parseInt方法:
第一次 parseInt("1",0) //基数为0时,按照上边陈述即为10进制,返回 1
第一次 parseInt("2",1)//基数为1,不在2-36范围内,默认输出NaN
第一次 parseInt("3",2)//基数为2,因为字符串3大于基数不合法,解析为NaN
答案也就是:[1, NaN, NaN]

parseFloat(string)方法
--与parseInt相同,从第一位置解析之末尾
--或者遇到第一个无效浮点数字符
--第一个小数点有效,之后的无效
--只识别十进制

parseFloat(" 0.1.1asd"); //0.1
parseFloat("0.1e2.3"); //10 e后面为整数 第二个点无效

《JavaScript高级程序设计》读书笔记(三)基本概念第二小节 Number类型的更多相关文章

  1. 《javascript高级程序设计》笔记三

    第三章 基本概念 任何语言的核心必然会描述这门语言最基本的工作原理.这部分内容对我们来说,读起来很乏味,甚至会产生困意,但这部分内容却是重要的!我有幸拜读<JavaScript高级程序设计> ...

  2. 《JavaScript高级程序设计》笔记:基本概念(三)

    数据类型 ECMAScript中有5种简单数据类型(也称为基本数据类型):undefined,null,boolean,number和string. typeof typeof null会返回“obj ...

  3. javascript高级程序设计读书笔记-事件(一)

    读书笔记,写的很乱   事件处理程序   事件处理程序分为三种: 1.html事件2. DOM0级,3,DOM2级别  没有DOM1 同样的事件 DOM0会顶掉html事件   因为他们都是属性  而 ...

  4. javascript高级程序设计 读书笔记1

    第二章  在HTML中使用JS 加载JS有三种:行内,head头部和外部链接JS   最好使用外部链接<script src="example.js" ></sc ...

  5. Javascript高级程序设计读书笔记(第三章)

    第3章 基本概念 3.4 数据类型 5种简单数据类型:undefined.boolean.number.null.string. typeof操作符,能返回下列某个字符串:“undefined”.“b ...

  6. javascript高级程序设计读书笔记

    第2章  在html中使用javascript 一般都会把js引用文件放在</body>前面,而不是放在<head>里, 目的是最后读取js文件以提高网页载入速度. 引用js文 ...

  7. JavaScript高级程序设计 读书笔记

    第一章 JavaScript 简介 第二章 Html中使用JavaScript 第三章 基本概念 第四章 变量,作用域,内存 第五章 引用类型 第六章 面向对象 第七章 函数表达式 第八章 BOM 第 ...

  8. JavaScript高级程序设计-读书笔记(6)

    第20章 JSON JSON是一个轻量级的数据格式,可以简化表示复杂数据结构的工作量 JSON的语法可以表示一下三种类型的值 l        简单值:使用与JavaScript相同的语法,可以在JS ...

  9. JavaScript高级程序设计-读书笔记(1)

    第1章 JavaScript简介 JavaScript是一种专为与网页交互而设计的脚本语言,由下列三个不同的部分组成: l        ECMAScript:提供核心语言功能: l        文 ...

随机推荐

  1. SpringBoot:静态资源的访问和配置(转载)

    默认静态资源访问Spring Boot的默认静态资源的路径为: spring.resources.static-locations=classpath:/META-INF/resources/,cla ...

  2. python后续学习

    关于使用python输出中文字符的问题: Python中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字,所以在读取中文时会报错. 解决方法为只要在文件开头加入 # -*- co ...

  3. MySQL数据库 | 数据表-查询命令详细记录

    本篇专门记录数据库增删改查中最常用.花招最多的 查. [文章结构] 一.数据的准备 二.基本的查询功能 三.条件查询 四.查询排序 五.聚合函数 六.分组查询 七.分页查询 八.连接查询 九.子查询 ...

  4. 常见的sql语句练习

    一. 1.新建表 test id varchar2(20)name varchar2(20)addr varchar2(50)score number create table test(id var ...

  5. 【13】堆排序 最小K个数

    题目 输入整数数组 arr ,找出其中最小的 k 个数.例如,输入4.5.1.6.2.7.3.8这8个数字,则最小的4个数字是1.2.3.4. 收获 优先队列实现 (n1,n2)->n2-n1是 ...

  6. mybatis报错:A query was run and no Result Maps were found for the Mapped Statement

    转自:https://blog.csdn.net/u013399093/article/details/53087469 今天编辑mybatis的xml文件,出现如下错误: 程序出现异常[A quer ...

  7. input file弹出框选择文件后缀限制

    在页面选择文件时的弹出框默认显示的是所有类型的文件,有时候文件太多不好选择,我们就要过滤掉不想展示的文件,这是需要用到input的accept属性,只有在type="file"才有 ...

  8. 如何对字符串进行码表替换转码--加密encode

      # encoding:utf-8 import base64 from string import maketrans OLD_STR = "ABCDEFGHIJKLMNOPQRSTUV ...

  9. Loppinha, the boy who likes sopinha Gym - 101875E (dp,记忆化搜索)

    https://vjudge.net/contest/299302#problem/E 题意:给出一个01 0101串,然后能量计算是连续的1就按1, 2, 3的能量加起来.然后给出起始的能量,求最少 ...

  10. Angular NgModule(模块)

    NgModule 模块是Angular种一个重要的点,因为Angular的基本构造块就是NgModule.NgModule 会把相关的代码收集到一些功能集中,形成功能单元.在使用Angular CL ...