我们知道最简洁的数字转字符串方法是:

var num = 123;
var string = num + "";

也就是在数字后面加上一个空字符。那么最简洁字符串转数字方法呢?

字符串只能进行加法(拼接)

字符串进行加法(拼接)是很常见的,但是字符串进行减法、乘法、除法呢?

这似乎很难定义,实际上字符串没有减法、乘法、除法操作。

但Javascript是动态语言,如果你拿两个字符串进行这三种操作的时候,他会尝试将其转成数字再进行相应的操作。例如:

alert("45" - "32"); //13

alert("5" * "6"); //30

alert("12" / "3"); //4

但这种转换操作和parseInt和parseFloat不太像,而和Number比较像,比如:

alert("123a" - "2bc"); //NaN
alert(parseInt("123a") - parseInt("2bc")); //121
alert(Number("123a") - Number("2bc")); //NaN

也就是说,这种转换和Number一样,会将非纯数字型字符串转成NaN,表示其是非数字。

而parseInt、parseFloat则会取出字符串中取出前面的能表示成数字的部分,而忽略掉后面不能表示成数字的部分。

最简洁的字符串转数字方法

借助字符串在进行其不能进行的运算时会先尝试转成数字这个特性。我们可以对字符串前加上正符号来将字符串转成数字。如:

var num = +"45";
alert(typeof num); //number

jQuery中有一个这个方法的应用,比如我们得到一个字符串怎么判断他能不能当成数字看待呢?jQuery的方法:

var string = "321";  //这个是得到的字符串,随意是什么
alert(+string + "" === string);  //true表示可以当成数字,否则不行 

我们注意到,如果string = "000",那么返回是false。

但实际上jQuery是为了获取HTML5里的data-Attribute的属性,由于data-Attribute属性返回的必然是字符串。如果字符串是"000",那么也不应当将其看做是数字0。

thanks shuaisam

如果要得到字符串是不是由纯数字组成可以这么判断:

var string = "000";
alert(+string + "" !== "NaN");

其实利用这个特性还有其他方法,比如:

var num = "45" - 0;
alert(typeof num); //number

var num = "45" * 1;
alert(typeof num); //number

var num = "45" / 1;
alert(typeof num); //number

进制问题 

0x开头的是16进制,所以Number和parseInt都会对16进制进行相应的转换,字符串的自动转换也是这般:

alert(parseInt("0x10")); //16
alert(Number("0x10")); //16
alert(+"0x10"); //16

不过parseFloat有些闹别扭,他不认识16进制,结果变成这样:

alert(parseFloat("0x10")); //0

更悲剧的是0开头的,我们知道0开头可以用来表示8进制,在Number和字符串自动转换中,0开头会当成十进制来获取,如:

alert(Number("010")); //10
alert(+"010"); //10

而parseInt中却很悲催,ECMAScript中并未对此进行强制规定所以出现了下面的情况:

alert(parseInt("010")); //8 in Firefox & IE

alert(parseInt("010")); //10 in Chrome

╮(╯_╰)╭ 难怪很少见到Javascript中用到8进制,如果要确保8进制只能使用parseInt的第二个参数了:

alert(parseInt("010", 8)); //8

parseFloat继续不认识8进制,所以:

alert(parseFloat("010")); //10

Javascript中字符串转数字相关推荐

  1. 如何从JavaScript中的给定数字中形成最小的数字

    by Prashant Yadav 通过Prashant Yadav 如何从JavaScript中的给定数字中形成最小的数字 (How to form the smallest possible nu ...

  2. JavaScript中字符串与Unicode编码的互相转换

    JavaScript中字符串与Unicode编码的互相转换 这段代码演示了JavaScript中字符串与Unicode编码的转换: // 为了控制台的演示方便, 变量没有添加 var 定义 // 实际 ...

  3. JavaScript 将字符串转换为数字 – JS 字符串转 Int 示例

    JavaScript 将字符串转换为数字 – JS 字符串转 Int 示例 "John Doe" -> String 'John Doe' -> String &quo ...

  4. 在javascript中将字符串转换为数字的6种方法

    在javascript中,数字可以用两种不同的方式表示, 1.作为实际数字. 2. 作为字符串 . 很多时候,我们需要在javascript中将字符串转换为数字. 我们将看到6种不同的方法可以将字符串 ...

  5. JavaScript中字符串连接/拼接的四种方式

    JavaScript中连接字符串的方式有4种,分别是使用加号运算符连接.使用${}配合反引号连接.使用concat()函数连接.使用join()函数连接. 1. 使用加号运算符 示例代码如下: let ...

  6. php 参数与数字比较,PHP8中字符串与数字的比较更智能

    PHP8中字符串与数字的比较更智能 PHP8.0发布[1]也有一段时间了,此次发布带来了很多实用且强大的功能,比如: Named arguments // php 7.x htmlspecialcha ...

  7. JavaScript中字符串数组赋值失败,不是每个字符串,却是字符。

    我的处女作<Canvas系列教程>在我的Github上正在连载更新,希望能得到您的关注和支持,让我有更多的动力进行创作. 教程介绍.教程目录等能在README里查阅. 传送门:https: ...

  8. c语言字母转换数字代码,实现c语言中字符串和数字的相互转换的代码

    实现c语言中字符串和数字的相互转换的代码 引导语:代码就是程序员用开发工具所支持的语言写出来的源文件,是一组由字符.符号或信号码元以离散形式表示信息的明确的'规则体系.以下是百分网小编分享给大家的实现 ...

  9. python字符串拼接数字_解决Python中字符串和数字拼接报错的方法

    解决Python中字符串和数字拼接报错的方法 前言 众所周知Python不像JS或者PHP这种弱类型语言里在字符串连接时会自动转换类型,如果直接将字符串和数字拼接会直接报错. 如以下的代码: # co ...

最新文章

  1. 【转】将 Linux 应用程序移植到 64 位系统上
  2. zigbee抗干扰matlab仿真,基于Zigbee的扩频通信MATLAB仿真.doc
  3. Java 接口小总结;
  4. C#后台,执行前台js 脚本
  5. linux网络编程(二)TCP通讯状态
  6. 北京、深圳 | 百度视觉算法研发实习生 人脸活体方向
  7. 【廖雪峰官方网站/Java教程】注解
  8. 一百多道.NET面试题!
  9. java从入门到精髓 - IO输入输出
  10. 最短路 Dijkstra 算法详解与模板
  11. django基础入门(3)django中模板
  12. [转][darkbaby]任天堂传——失落的泰坦王朝(上)
  13. 中望3D 2021 “坐标标注”
  14. 照度稳定可调LED台灯
  15. 使用SketchUp制作球体的方法(图文教程)
  16. linux下cat命令,关于cat >file 、cat <file <<EOF、cat <<-EOF的区别
  17. 学python能赚钱吗-利用python能怎么挣钱
  18. 『网络安全』蜜罐到蜜网入门指南(一)蜜罐初识
  19. 我的世界java骷髅马_我的世界中国版骷髅马怎么获得 骷髅马召唤驯服指令
  20. compare_exchange_weak

热门文章

  1. List、Vector、ArraryList、LinkedList
  2. php提示行号,在php中使用trigger_错误时如何获得正确的行号?
  3. java helloworld代码_java学习应用篇|逃不掉的HelloWorld
  4. Windows版本Oracle审计日志,【情报】Oracle ORA-28056: 未能将审计记录写入 Windows 事件日志...
  5. Java基础:char类型字节占用数
  6. java core日志在哪里_java-如何在未启用日志记录功能的情况下在...
  7. 已经yum安装的基础上,升级编译安装git
  8. 20个开源项目托管站点推荐
  9. 常见的跑马灯效果,无缝连接。mcake官网公告使用
  10. 微信公众号点击菜单即可打开并登录微站的实现方法