内容
---语法 上一小节
---数据类型 本小节 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. 云原生学习笔记(3)——Kubernetes基本概念

    学习地址:https://developer.aliyun.com/lesson_1651_13078?spm=5176.270689.1397405.6.716ef5f8Q9z1z3#_13078 ...

  2. python项目虚拟环境搭建

    一. 虚拟环境搭建目的 一个项目一个环境,防止各个项目互相干扰,项目更加简洁,利于打包.... 二.使用 pip install virtualenv 安装 创建虚拟环境 cd my_project_ ...

  3. Unity Coroutine详解(一)

    Unity 中协程是个非常强大的功能,其作用主要是用于游戏中的延时调用或者执行一连串的有时间间隔的事件流程,例如剧情对话等.简单总结了几点协程相关的知识点,旨在加深记忆,同时为初学者解惑. 1.协程. ...

  4. Wx-公众号-关闭内置浏览器页面,返回公众号橱窗

    方法一: pushHistory(); function pushHistory() { var state = { title: "title", url: "#&qu ...

  5. (转)JSONObject的toBean 和 fromObject

    public static void main(String[] args) { Map map=new HashMap();map.put("我","妹"); ...

  6. 短网址(t.cn、url.cn)生成,网址缩短接口API

    简要说明 短网址api接口有很多格式,不同的接口生成的短网址格式也不同,比如常见的t.cn.url.cn.w.url.cn等格式.总而言之短网址接口就是用来将一个冗长的链接缩短成10个字符以内的短链接 ...

  7. 如何使用 idea提交svn代码

    链接:https://jingyan.baidu.com/article/b2c186c80d81b1c46ff6ff59.html

  8. 随机获取list或set或map中的一个元素

    转自:https://m.2cto.com/kf/201507/412937.html import java.util.HashSet;import java.util.List;import ja ...

  9. hibernate和mybatis出现配置文件xml的文件报错Multiple annotations found at this line(转)

    hibernate中的xml配置文件Multiple annotations found at this line,出现这个红叉报错,直接是把 <?xml version="1.0&q ...

  10. MySQL 学习(二)总体框架 & redo-log 和 bin-log 的介绍

    文章部分总结来自课程,非原创 MySQL 组织架构     下面这张图就可以解释关于 MySQL 底层的组织架构了.     上面的图可以直观地展示两个重要的东西 : 一条 SQL 的执行流程 MyS ...