2019独角兽企业重金招聘Python工程师标准>>>

将非数值转换成数值的函数有三个:Number(),parseInt(),parseFloat();

小记tip:Number()可以用于任何数据类型;parseInt(),parseFloat()针对的是将字符串;

Number()的转换规则如下:主要举一些特殊例子;

第一类:null,undefined

 console.log(Number(null)) //返回的是0console.log(Number(undefined)) //返回的是NaN;

第二类:字符串

  /*************如果是字符串************/console.log(Number('-123')) //返回-123   //字符串只包含数字(包括字符串首个字符为加减号),则将其转换成十进制数字,并且如果首个字符为0则会忽略console.log(Number('+123'))  //返回123console.log(Number('123'))  //返回123console.log(Number('0123'))  //返回123//如果字符串中包含有效的浮点格式,则相对应的转换成对应的浮点数,和上述规则类似,首个字符为o则忽略console.log(Number('01.2')) //返回1.2console.log(Number('1.2')) //返回1.2//如果字符串包含有效的十六进制数,则转换成大小相同的十进制数console.log(Number('0xaf')) //返回175//如果字符串为空,则返回0;console.log(Number('')) //0//除去以上格式之外,则返回NaN;console.log(Number('0120sd'))  //NaN

第三类:object 按照javascript高级程序设计(第三版),如果是对象,则调用对象的valueOf()方法,然后依照前面的规则转换返回的值,如果转换的结果为NaN(非数值),则调用对象的toString()方法,然后依照前面的规则转换返回的值;下面来直接看测试代码:

        var ary_=new Array('20',25);console.log(ary_.valueOf());//['20',25]; 数组的实例对象 ,非数值console.log(ary_.toString())//20,25 字符串console.log(Number(ary_))  //NaNvar boolean=new Boolean(85)console.log(boolean.valueOf());//trueconsole.log(boolean.toString())//字符串trueconsole.log(Number(boolean))//1var date=new Date(2018,3,18)console.log(date.valueOf())  //1523980800000console.log(date.toString())  //Wed Apr 18 2018 00:00:00 GMT+0800 (中国标准时间)console.log(Number(date))  //1523980800000function test(){this.name='zh';}console.log(test.valueOf())//返回函数本身,非数值console.log(test.toString())//返回函数的字符串形式console.log(Number(test))//NaNvar num=new Number(52);console.log(num.valueOf())//数值52console.log(num.toString())//字符串‘52’console.log(Number(num))//数值52var obj={"name":"zh","age":"25","salary":20000}console.log(obj.valueOf());//返回本身,非数值console.log(obj.toString());//[object Object] 字符串console.log(Number(obj))  //NaNvar str=new String('sdsf52');console.log(str.valueOf())//'sdsf52' ,字符串的值console.log(str.toString())console.log(Number(str))//NaN

parseInt()转换规则

tip:1:忽略字符串前面的空格,从第一个字符,如果第一个字符串不是数字字符或者负号,该函数就会返回NaN,一直解析到最后一个字符。如果中途遇到一个非数字的字符,则就会停止,例如parseInt('2025zh526'),返回的2025

tip2:parseInt()会识别整数的格式,是十进制还是八进制亦或十六进制;以0x开头的,并且后面是数字的为 十六进制;以0开头后面是数字的为八进制;但是在ECMAScript 5 js引擎下,parseInt()不具有解析八进制的能力,例如parseInt('050');返回的是50;

tip3:为了消除上述的困惑,parseInt()提供第二个参数,来确定是按照那种进制解析字符串,见如下例子

console.log(parseInt('ad'))   //NaN
console.log(parseInt('ad',16)) //173
console.log(parseInt('10',8))  //8
console.log(parseInt('10',12))  //12
console.log(parseInt('11',12))  //13  -->12+1
console.log(parseInt('3',2))  //NaN

["1","2","3"].map(parseInt) 面试题解惑

parseFloat()转换规则

tip1:parseFloat()只解析十进制值;

tip2:忽略字符串前面的空格,从第一个字符(如果第一个字符为0则会忽略),一直解析到字符串的尾部,直到解析到一个无效的浮点数字符为止,字符串的第一个小数点是有效的,第二个为无效,第二个小数点后面的字符会被忽略,下面见几个特殊的例子。

tip3:字符串包含一个整数,或者小数点后面都是0,则返回整数

        console.log(parseFloat('0dsfa'))//0;console.log(parseFloat('0xaf'))//0;console.log(parseFloat('052dsfa'))//52;console.log(parseFloat('dsd0dsfa'))//NaN;console.log(parseFloat('520'))//520;console.log(parseFloat('3.14e5'))//314000;console.log(parseFloat('052.0'))//52console.log(parseFloat('052.12.68'))//52.12console.log(parseFloat(''))//NaN

转载于:https://my.oschina.net/u/3407699/blog/1645043

javascript高级程序设计学习之数值转换 |Number(),parseInt(),parseFloat()相关推荐

  1. JavaScript高级程序设计学习笔记(三)

    分享一下第五章(引用类型)的笔记,内容比较多,我拆成了两部分,今天这部分是关于Object.Array.Date和RegExp类型的. 以下的笔记是书上一些我以前学习的时候,没有太重视的js基础知识, ...

  2. javascript高级程序设计学习笔记

    javascript高级程序设计,当枕头书已经好久了~zz  现在觉得自己在js的开发上遇到了一些瓶颈,归根究底还是基础太薄弱,所以重新刷一遍js高程希望有更新的认识. 一.javascript简介 ...

  3. [Javascript 高级程序设计]学习心得记录 函数参数传递与引用

    最近开始啃js的红宝书:<Javascript 高级程序设计>,偶有心得,记录一下. 先上代码 function howManyArgs() {alert(arguments.length ...

  4. JavaScript高级程序设计学习(二)之基本概念

    任何语言的核心都必然会描述这门语言基本的工作原理.而描述的内容通常都要涉及这门语 言的语法.操作符.数据类型.内置功能等用于构建复杂解决方案的基本概念.如前所述, ECMA-262通过叫做 ECMAS ...

  5. JavaScript高级程序设计学习(四)之引用类型(续)

    一.Date类型 其实引用类型和相关的操作方法,远远不止昨天的所说的那些,还有一部分今天继续补充. 在java中日期Date,它所属的包有sql包,也有util包.我个人比较喜欢用util包的.理由, ...

  6. javascript高级程序设计 学习笔记 第五章 上

      第五章   引用类型的值(对象)是引用类型的一个实例.在 ECMAScript 中,引用类型是一种数据结构, 用于将数据和功能组织在一起.它也常被称为类,但这种称呼并不妥当.尽管 ECMAScri ...

  7. JavaScript高级程序设计学习笔记--引用类型

    Object类型 对象字面量表示法: var person={ name:"Nicholas", age:29, 5:true }; 这人例子会创建一个对象,包含三个属性:name ...

  8. JavaScript高级程序设计学习笔记第二十章--JSON

    1.JSON:JavaScript Object Notation, JavaScript 对象表示法. 2.最重要的是要理解它是一种数据格式,不是一种编程语言.虽然具有相同的语法形式,但 JSON ...

  9. [Javascript 高级程序设计]学习心得记录11 js的BOM

    BOM(浏览器对象模型)是web中js的核心,而BOM的核心对象就是window对象.在浏览器中,window对象有双重角色,它既是通过js访问浏览器的一个接口,又是规定的Global对象.此外,还有 ...

最新文章

  1. Nginx(5)-nginx.conf文件详解
  2. 第一章--计算机系统知识
  3. DW 在onload运行recordset find.html时 发生了以下javascript错误
  4. php远程上传实例,PHP ftp类实现远程附件上传例子
  5. Java EE 8终于给出即将完成的迹象
  6. python astype category_python类别比较型图表柱形图系列堆积柱形图系列
  7. HMI设计RGB配色表
  8. vscode win10笔记本 蓝屏_win10蓝屏错误代码大全详解
  9. 啃K8s之快速入门,以及哭吧S(k8s)单节点部署
  10. 【多图】二进制的起源,从01到创造天地万物
  11. 川师计算机类专业收分安徽,四川师范大学专业收分
  12. C++解决猴子吃桃问题(详细)
  13. 利用描点绘图法求解复杂函数
  14. dw中css鼠标经过的时候,Dreamweaver鼠标经过出现效果 怎么操作
  15. 一个人最顶级的才华,是会填坑
  16. ValueError: The truth value of a DataFrame is ambiguous. Use a.empty 解决办法。(附 if 深层理解)
  17. 美的、九阳、苏泊尔“变粉”,女性小家电成下一片“蓝海”?
  18. 832计算机技术,2017年北方民族大学计算机应用技术832C语言程序设计与数据结构之数据结构考研题库...
  19. MATLAB画正方体
  20. HDU-2547 无剑无我

热门文章

  1. php 获取京东交易账号,PHP爬虫爬取京东列表
  2. JQuery中的一些重要方法
  3. SQL Server将数据库中的表复制到另一个数据库
  4. jsp中生成的验证码和存在session里面的验证码不一致的处理
  5. C++ 泛型编程(一):模板基础:函数模板、类模板、模板推演成函数的机制、模板实例化、模板匹配规则
  6. (十)nodejs循序渐进-高性能游戏服务器框架pomelo之介绍和安装篇
  7. python回归分析实验_python线性回归实验
  8. 使用named_mutex和named_condition配合实现读写锁
  9. H.264中的I_PCM模式
  10. GCC常用选项使用详解