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. Springboot源码分析之代理三板斧

    摘要: 在Spring的版本变迁过程中,注解发生了很多的变化,然而代理的设计也发生了微妙的变化,从Spring1.x的ProxyFactoryBean的硬编码岛Spring2.x的Aspectj注解, ...

  2. oauth2.0授权详解

    学习oauth认证之前先回顾一下通过sessionid的会话过程 关于session与cookie的请戳:https://www.cnblogs.com/moran1992/p/10793748.ht ...

  3. Ribbon实现客户端负载均衡

    什么是Ribbon? 客户端负载均衡组件. 前期准备: 搭建一个Eureka集群和一个注册服务 https://www.cnblogs.com/noneplus/p/11374883.html 创建服 ...

  4. python学习——字符串

    1)字符串解释 字符串是python中常用的数据类型我们可以使用" "或' '来创建字符串. 2)字符串操作 """访问字符串中的值"&qu ...

  5. centos7搭建hadoop3.*.*系列

    最近搭建这个hadoop踩过不少坑,先是配置JDK搞错路径(普通用户和root用户下的路径不同),再就是hadoop版本不同导致的启动错误,网上找到的是hadoop2.*.*的版本,但是我安装的had ...

  6. runnable和thread实现多线程的区别

    下面以典型的买票程序(基本都是以这个为例子)为例,来说明二者的区别. 首先通过继承Thread类实现,代码如下: class MyThread extends Thread{ private int ...

  7. 【数据库】MySQL 函数大全包含示例(涵盖了常用如时间、数字、字符串处理、数据流函数的和一些冷门的)

    ps:博客园markdown不能自动生成列表,更好的阅读体验可访问我的个人博客http://www.isspark.com/archives/mysqlFunctionDesc 数学函数(Mathem ...

  8. Flink的Job启动TaskManager端(源码分析)

    前面说到了  Flink的JobManager启动(源码分析)  启动了TaskManager 然后  Flink的Job启动JobManager端(源码分析)  说到JobManager会将转化得到 ...

  9. P1251 餐巾计划问题 费用流

    https://www.luogu.org/problemnew/show/P1251 题意 有一家酒店,酒店每天需要ri张桌布,桌布可以现买,p元.可以通过快洗店,等m天,f元.可以通过慢洗店,等n ...

  10. CF - 1130 E Wrong Answer

    PS:换了一种方式 希望大家喜欢 2333 /** code by: zstu wxk time: 2019/03/01 Problem Link: http://codeforces.com/con ...