JavaScript中有多种数据类型,在实际工作中,不管是有意还是无意的,我们总能碰到不一样的数据类型值之间进行运算,或者我想从用户输入获得一个数字时,而用户却输入了一个字符串,这种时候就需要用到今天介绍的东西了——数据类型转换。JS中的数据类型转换主要分为两大类:显式类型转换,隐式类型转换。

一     显示类型转换

1、Number()

接受一个参数,并把它转换成数字。

如果参数包含数字和小数点以外的其他字符,则转换失败,返回NaN。下面是一些特殊值转换为数字的结果:

 Number(null);//
Number(undefined);//NaN
Number(true);//
Number(false);//
Number("");//

  2、parseInt()

接受两个参数,第一个参数会被转换成十进制整数,第二个参数是一个数字,规定第一个参数的进制,它是可选的,默认是10。

转换规则:

    a,首先判断第一个参数的数据类型,如果不是字符串或数字类型,则转换失败,直接返回NaN;

    b,若是数字,则原样返回;

    c,若是字符串,则从第一个非空白字符开始检测,直到遇到第一个非数字字符为止,然后返回前面的部分;

    d,如果正负号是第一个非空字符,那么可以识别正负号;

    e,不能识别小数点。

 parseInt("123");//
parseInt("-123");//-123
parseInt(123.123);//
parseInt(" 123");//
parseInt("123abc");//
parseInt("abc123");//NaN
parseInt(true);//NaN
parseInt(undefined);//NaN
parseInt(unll);//NaN
parseInt("");//NaN
11 parseInt(110,2);//6
12 parseInt(110,16);//272

  3、parseFloat()

接受一个参数,并把它转换成小数。如果正负号是第一个非空字符,那么可以识别正负号。和parseInt唯一不同的是,它可以识别第一次出现的小数点。

 parseFloat("123.123");//123.123
parseFloat("123.1.2.3");//123.1
parseFloat("123.123abc");//123.123

  4、toString()

用需要被转换成字符串的值调用toString()方法,格式:test.toString(),注意:数字不能直接调用,需要把数字赋值给变量调用。toString()方法的返回值都是字符串类型。

在转换数字时,可以接受一个数字类型作为参数,参数规定了转换后结果的进制。其他时候传参无效。

 var num = 10;
var a = num.toString();//"10"
var b = num.toString(2);//"1010"
var c = num.toString(8);//"12"
var d = num.toString(16);//"a"

  5、String()

接受一个参数,将它转换成字符串。任何东西传进去都能的到字符串类型的返回值。

 String(123);//"123"
String(123.123);//"123.123"
String(undefined);//"undefined"
String(null);//"null"
String(true);//"true"

  6、Boolean()

除undefined、null、0、NaN、“”(空串)、false转换成false外,其他任何东西都被转成true。

 Boolean(undefined);//false
Boolean(null);//false
Boolean(0);//false
Boolean(NaN);//false
Boolean("");//false
Boolean(false);//false

二  隐式类型转换

  

  1、isNaN()

    接受一个参数,判断参数是否是数字,是则返回false,否则返回ture。

    会触发隐式类型转换,先调用Number()把参数转换成数字类型。

 isNaN(123);//false
isNaN("123");//false
isNaN("");//false
isNaN("abc");true

  2、++/--(自增自减)和+/-(正负)

会触发隐式类型转换,先调用Number()把操作数转换成数字类型。

 var num = "123";
num ++;//
console.log(num);//

  3、+(数字和字符串相加时)

会触发隐式类型转换,先调用String()把操作数转换成字符串类型。

 var num = 12;
console.log("I'm " + num + "years old.");//"I'm 12 years old"
console.log(num + "12");//"1212"

  4、-、*、/、%

    会触发隐式类型转换,先调用Number()把操作数转换成数字类型。

 var num = 12;
console.log(num - 1);//
console.log(num * 1);//
console.log(num / 1);//
console.log(num % 1);//

   5、&&、||、!

    会触发隐式类型转换,调用Boolean()把每个操作数转换成布尔类型。

 123 && "abc";//"abc"
0 && "abc";//0
123 || "abc";//
0 || undefined;//undefined
!0;//true
!1;//false

  关于逻辑运算的返回值:当两个原始值进行逻辑运算时,与运算会返回第一个找到的能被Boolean()转换成false的操作数,否则返回最后一个操作数。或运算会返回第一个能被Boolean()转换成true的操作数,否则返回最后一个操作数。非运算将返回被Boolean()转换成布尔值后再取反的值。即非运算返回的不再是操作数的值,而是布尔值。

  

  6、>、<、<=、>=、==、!=(数字和字符串比较时)

    会触发隐式类型转换,先调用Number()把操作数转换成数字类型。

 123 > "122";//true
123 < "124";//true
123 >= "123";//true
123 <= "123";//true
123 == "123";//true
123 != "123";//false

最后有两个特别的:undefined == null 返回true;NaN == NaN 返回false。另外在做加法(+)运算时字符串优先,在做其他数学计算时,数字优先。

JavaScript之数据类型转换的更多相关文章

  1. JavaScript中数据类型转换总结

    JavaScript中数据类型转换总结 在js中,数据类型转换分为显式数据类型转换和隐式数据类型转换. 1, 显式数据类型转换 a:转数字: 1)Number转换: 代码: var a = " ...

  2. JavaScript的数据类型转换

    首先,由于JavaScript是弱类型语言(弱类型的语言的东西没有明显的类型,他能随着环境的不同,自动变换类型而强类型则没这样的规定,不同类型间的操作有严格定义,只有相同类型的变量才能操作,虽然系统也 ...

  3. js | JavaScript中数据类型转换总结

    转载 在js中,数据类型转换分为显式数据类型转换和隐式数据类型转换. 1, 显式数据类型转换 a:转数字: 1)Number转换: 代码: var a = “123”; a = Number(a); ...

  4. javascript中数据类型转换

    转换为数字: parseInt():转换为整数型数值:从下标0开始判断,若为数值型则继续直到遇到非数值,返回前面的整数值: 小数点无效,若0开始为非数值则返回NaN: 转换空字符串会返回NaN: 能转 ...

  5. JS 之 数据类型转换

          首先我们来简单了解一下JS中的数据类型,JavaScript拥有字符串.数字.布尔.数组.对象.Null.Undefiend 6中数据类型.同一时候,JavaScript拥有动态类型. 也 ...

  6. JavaScript中的数据类型转换

    本文中提到的“原始值”指的是undefined,null,Boolean,string和number. 本文中的对象是native对象,宿主对象(浏览器定义的对象)按照各自的算法转换. JavaScr ...

  7. JavaScript数据类型转换

    原文转自:http://javascript.ruanyifeng.com/grammar/conversion.html#rd JavaScript是一种动态类型语言,变量是没有类型的,可以随时赋予 ...

  8. 第一百二十七节,JavaScript,JSON数据类型转换,数据转换成字符串,字符串转换成数据

    第一百二十七节,JavaScript,JSON数据类型转换,数据转换成字符串,字符串转换成数据 学习要点: 1.JSON语法 2.解析和序列化 前两章我们探讨了XML的结构化数据,但开发人员还是觉得这 ...

  9. python 全栈开发,Day50(Javascript简介,第一个JavaScript代码,数据类型,运算符,数据类型转换,流程控制,百度换肤,显示隐藏)

    一.Javascript简介 Web前端有三层: HTML:从语义的角度,描述页面结构 CSS:从审美的角度,描述样式(美化页面) JavaScript:从交互的角度,描述行为(提升用户体验) Jav ...

随机推荐

  1. 一文了解Python常见的序列化操作

    关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android.Python.Java和Go,这个也是我们团队的主要技术栈. Github:https:/ ...

  2. 2019年 iPad无法充电

    2019年 iPad无法充电  到售后网点检测没毛病,可能是apple产品做了低温保护逻辑机制低温无法充电,或者说是冬天温度跟iPad电池充电温度要求不符.各位有遇到情况的可以看看是不是这种问题,这问 ...

  3. C# 读取Word内容控件

    在Word中,借助内容控件,可设计出具有特定功能的文档或模板.以下表格中简单介绍了几种常用的内容控件. 名称 简介 下拉列表内容控件 下拉列表包含了一个预先定义好的列表.和组合框不同的是下拉列表不允许 ...

  4. 最近学习了JDK SPI

    JDK SPI是什么 最近工作中听几个同事说了好几次SPI这个名词,虽然和我没关系,但是心里默默想还是学习一下,不然下次和我说到SPI,连是什么都不知道那就尴尬了. 所以SPI是什么呢?SPI全称Se ...

  5. 老司机也晕车--java字符串String晕车之旅

    首先声明,有晕车经历的司机请自备药物,String也可能让你怀疑人生! 第一道 开胃菜 请听题!第一道题: String hello="hello world!"; String ...

  6. MyBatis_Generator (MBG)逆向工程的四种方式

    mybatis是目前很流行的持久层框架,其逆向工程更是大大缩减了我们的开发时间.有兴趣的可以看文档. 文档地址: http://www.mybatis.org/generator/index.html ...

  7. 在IIS下部署PHP

    没有.net ramework 4.0 的要先安装 dotNetFx40_Full_x86_x64.exe PHP压缩包 推荐用5.6.29版 IIS下PHP压缩包下载地址:"http:// ...

  8. 2019DX#3

    Solved Pro.ID Title Ratio(Accepted / Submitted)   1001 Azshara's deep sea 凸包 6.67%(6/90)  

  9. CF EDU 1101D GCD Counting 树形DP + 质因子分解

    CF EDU 1101D GCD Counting 题意 有一颗树,每个节点有一个值,问树上最长链的长度,要求链上的每个节点的GCD值大于1. 思路 由于每个数的质因子很少,题目的数据200000&l ...

  10. CodeForces - 632E Thief in a Shop 完全背包

    632E:http://codeforces.com/problemset/problem/632/E 参考:https://blog.csdn.net/qq_21057881/article/det ...