JavaScript之数据类型转换
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之数据类型转换的更多相关文章
- JavaScript中数据类型转换总结
JavaScript中数据类型转换总结 在js中,数据类型转换分为显式数据类型转换和隐式数据类型转换. 1, 显式数据类型转换 a:转数字: 1)Number转换: 代码: var a = " ...
- JavaScript的数据类型转换
首先,由于JavaScript是弱类型语言(弱类型的语言的东西没有明显的类型,他能随着环境的不同,自动变换类型而强类型则没这样的规定,不同类型间的操作有严格定义,只有相同类型的变量才能操作,虽然系统也 ...
- js | JavaScript中数据类型转换总结
转载 在js中,数据类型转换分为显式数据类型转换和隐式数据类型转换. 1, 显式数据类型转换 a:转数字: 1)Number转换: 代码: var a = “123”; a = Number(a); ...
- javascript中数据类型转换
转换为数字: parseInt():转换为整数型数值:从下标0开始判断,若为数值型则继续直到遇到非数值,返回前面的整数值: 小数点无效,若0开始为非数值则返回NaN: 转换空字符串会返回NaN: 能转 ...
- JS 之 数据类型转换
首先我们来简单了解一下JS中的数据类型,JavaScript拥有字符串.数字.布尔.数组.对象.Null.Undefiend 6中数据类型.同一时候,JavaScript拥有动态类型. 也 ...
- JavaScript中的数据类型转换
本文中提到的“原始值”指的是undefined,null,Boolean,string和number. 本文中的对象是native对象,宿主对象(浏览器定义的对象)按照各自的算法转换. JavaScr ...
- JavaScript数据类型转换
原文转自:http://javascript.ruanyifeng.com/grammar/conversion.html#rd JavaScript是一种动态类型语言,变量是没有类型的,可以随时赋予 ...
- 第一百二十七节,JavaScript,JSON数据类型转换,数据转换成字符串,字符串转换成数据
第一百二十七节,JavaScript,JSON数据类型转换,数据转换成字符串,字符串转换成数据 学习要点: 1.JSON语法 2.解析和序列化 前两章我们探讨了XML的结构化数据,但开发人员还是觉得这 ...
- python 全栈开发,Day50(Javascript简介,第一个JavaScript代码,数据类型,运算符,数据类型转换,流程控制,百度换肤,显示隐藏)
一.Javascript简介 Web前端有三层: HTML:从语义的角度,描述页面结构 CSS:从审美的角度,描述样式(美化页面) JavaScript:从交互的角度,描述行为(提升用户体验) Jav ...
随机推荐
- Springboot源码分析之代理三板斧
摘要: 在Spring的版本变迁过程中,注解发生了很多的变化,然而代理的设计也发生了微妙的变化,从Spring1.x的ProxyFactoryBean的硬编码岛Spring2.x的Aspectj注解, ...
- oauth2.0授权详解
学习oauth认证之前先回顾一下通过sessionid的会话过程 关于session与cookie的请戳:https://www.cnblogs.com/moran1992/p/10793748.ht ...
- Ribbon实现客户端负载均衡
什么是Ribbon? 客户端负载均衡组件. 前期准备: 搭建一个Eureka集群和一个注册服务 https://www.cnblogs.com/noneplus/p/11374883.html 创建服 ...
- python学习——字符串
1)字符串解释 字符串是python中常用的数据类型我们可以使用" "或' '来创建字符串. 2)字符串操作 """访问字符串中的值"&qu ...
- centos7搭建hadoop3.*.*系列
最近搭建这个hadoop踩过不少坑,先是配置JDK搞错路径(普通用户和root用户下的路径不同),再就是hadoop版本不同导致的启动错误,网上找到的是hadoop2.*.*的版本,但是我安装的had ...
- runnable和thread实现多线程的区别
下面以典型的买票程序(基本都是以这个为例子)为例,来说明二者的区别. 首先通过继承Thread类实现,代码如下: class MyThread extends Thread{ private int ...
- 【数据库】MySQL 函数大全包含示例(涵盖了常用如时间、数字、字符串处理、数据流函数的和一些冷门的)
ps:博客园markdown不能自动生成列表,更好的阅读体验可访问我的个人博客http://www.isspark.com/archives/mysqlFunctionDesc 数学函数(Mathem ...
- Flink的Job启动TaskManager端(源码分析)
前面说到了 Flink的JobManager启动(源码分析) 启动了TaskManager 然后 Flink的Job启动JobManager端(源码分析) 说到JobManager会将转化得到 ...
- P1251 餐巾计划问题 费用流
https://www.luogu.org/problemnew/show/P1251 题意 有一家酒店,酒店每天需要ri张桌布,桌布可以现买,p元.可以通过快洗店,等m天,f元.可以通过慢洗店,等n ...
- CF - 1130 E Wrong Answer
PS:换了一种方式 希望大家喜欢 2333 /** code by: zstu wxk time: 2019/03/01 Problem Link: http://codeforces.com/con ...