系统学习(javascript)_基础(数据类型之间的转换)
在js中数据类型转换一般分为两种,即强制类型转换和隐式类型转换(利用javascript弱变量类型转换)。
强制转换:
利用js提供的函数parseInt(),parseFloat(),Number(),Boolean()进行数据转换,前两个分别是对数据进行解析转换,前者是整数,后者是浮点数。解析的原则是从前往后进行解析,尽其所能。若存在有能识别的数字就解析,如果第一位不是数字则返回NaN。Number则是对整体进行判断,是数字返回数字,否则返回NaN。Boolean()则是内容强制转换为布尔true或者false。
ParseInt():
parseInt(123);//123
parseInt(+123);//123
parseInt(++123);//NaN
parseInt(-123);//-123
parseInt(--123);//NaN
parseInt(“12.3元”);//12
parseInt("abc");//NaN
parseInt([1,2]);//1
parseInt(" ");//NaN
该方法还有基模式,可以把二进制、八进制、十六进制或其他任何进制的字符串转换成整数。基于parseInt()方法的第二个参数指定,对于含有前导的数则直接进行解析:
parseInt("AA",16);//170
parseInt(10,2);//2
parseInt("10",8);//8
parseInt("10",10);//10
//含有前导
parseInt("0xAA");//170
//如果二进制数包含前导0,那么最好采用基数2,不然默认以十进制解析
parseInt("010");//10
parseInt("010",2);//2
parseInt("010", 8);//8
parseInt("010", 10); //10
parseInt(null);//NaN
parseFloat():
parseFloat("123");//123
parseFloat("-123");//123
parseFloat("+123");//123
parseFloat("12.34");//12.34
parseFloat("12.35元");//12.35
parseFloat("12.23.122");//12.23
parseFloat("av");//NaN
parseFloat("0xAA");//0
parseFloat("0110");//110
parseFloat([1]);//1
parseFloat([2,3]);//2
parseFloat([]);//NaN
parseFloat(null);//NaN
Number():
Number("123");//123
Number("+123");//123
Number("12.3");//12.3
Number(true);//1
Number("12.3.4");//NaN
Number(" ");//0
Number("abc");//NaN
Number([]);//0
Number([1]);//1
Number([1,2]);//NaN
Number(new Object());//NaN
Number(null);//0
Boolean():不会对引号里面的数字进行自动进行转换。
Boolean(1) ;//true
Boolean(0);//false
Boolean("1");//true
Boolean("0");//true
Boolean("abc");//true
Boolean('');//false
Boolean(' ');//true
Boolean([]);//true
Boolean([1]);//true
Boolean(null);//false
而String()则是传入的所有数据类型转换为字符串。
String()和toString()方法的区别
typeof String(null)//String
typeof String(undefined)//String
隐式类型转换:
隐式类型转换和java中大不相同,在js中数据类型不严格,没有浮点型和整型。
隐式类型转换指的是字符串和数值类型之间的转换,在进行字符串和数字之间进行减乘除取模运算或者进行比较运算时,自动把字符串转换为数字,转换数字的默认方法是调用Number()。进行加法运算则是将数字看成字符串进行拼接。
var x = "123";
var y = 121;
console.log(x+y);//"123121;
console.log(x-y);//2
console.log(x*y);//14883
console.log(x/y);//1.016528256198346
console.log(x%y);//2
console.log(x>y);//true
console.log(x==y);//false
console.log("123a">y);//false诡异
javascript只是一种弱类型的脚本语言,语法相对于java等高级编程语言来说不够严格,所以对于它的数据类型之间的转换很容易混淆。
参考文章:https://www.cnblogs.com/liqiangchn/p/6915072.html
系统学习(javascript)_基础(数据类型之间的转换)的更多相关文章
- JavaScript中基本数据类型之间的转换
在JavaScript中共有六种数据类型,其中有五种是基本数据类型,还有一种则是引用数据类型.五种基本数据类型分别是:Number 数值类型.String 字符串类型.Boolean 布尔类型, nu ...
- 10-10C#基础---数据类型之间的转换
10-10 C#基础数据类型转换(熟练掌握) 第一课 数据类型之间的转换 基本类型的转换:自动转换(隐式转换)和强制转换(显示转换) 装箱转换:允许值类型隐式转换成引用类型. 拆箱转换:允许将引用类 ...
- Java基础——数据类型之间的转换
Java数据类型分为三大类,即布尔型.字符型和数值型.其中数值型又分为整型和浮点型.Java的基本数据类型(8种)为布尔型boolean(1字节):字符型char(2字节):整型byte(1字节).s ...
- 记录我的 python 学习历程-Day07 基础数据类型进阶 / 数据类型之间的转换 / 基础数据类型总结 / 编码的进阶
基础数据类型 str(字符串) str:补充方法练习一遍就行 s.capitalize() 首字母大写,其余变小写 s = 'dyLAn' print(s.capitalize()) # Dylan ...
- Java 系统学习梳理_【All】
Java基础 1. Java学习---JDK的安装和配置 2. Java学习---Java代码编写规范 2. Java学习---HashMap和HashSet的内部工作机制 3. Java学习---J ...
- python学习日记(基础数据类型及其方法01)
数字 int 主要是用于计算的,常用的方法有一种 #既十进制数值用二进制表示时,最少使用的位数i = 3#3的ASCII为:0000 0011,即两位 s = i.bit_length() print ...
- python学习笔记02 --------------基础数据类型
python的基本数据类型: 1.基本数据 1.1. 数字类型 1.1.1 整数 int int() #将括号内内容转化为整数类型. 1.1.2 浮点数 float 1.1.3 复 ...
- java中的、标识符、运算符以及数据类型之间的转换。
---恢复内容开始--- 数据类型之间的转换: 1:自动转换:就是不用说出要转换成什么类型,由java中的虚拟机自动将小数据类型转换成大数据类型,但大数据中的数据精度有可能被破坏. 2:强制转换:强制 ...
- Java中的基本数据类型和基本数据类型之间的转换
在Java中有8中基本数据类型,分别为: 整型: byte.short.int.long 浮点型:float.double 布尔型:boolean 字符型:char. byte: 8位, 封装 ...
随机推荐
- 反爬虫之JS反编译:PyExecJS
PyExecJS是python运行JavaScript代码的包 安装: pip install PyExecJS (或者easy_install PyExecJS) 依赖: 需要有执行JS的程序, ...
- ySQL性能优化的21个最佳实践 和 mysql使用索引
MySQL性能优化的21个最佳实践 和 mysql使用索引 今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我 ...
- mappers标签引入映射器的四种方式
第一种方式:mapper标签,通过resource属性引入classpath路径的相对资源 <!-- Using classpath relative resources --> < ...
- linux 关机、重启
一.重启命令:1.reboot2.shutdown -r now 立刻重启(root用户使用)3.shutdown -r 10 过10分钟自动重启(root用户使用) 4.shutdown -r 20 ...
- CentOS6.7的安装
VMware9的安装请阅读: http://www.cnblogs.com/duanji/p/yueding.html CentOS6.7在VMware9中安装 1.启动VMware的画面 2.点击 ...
- BZOJ 3498 PA2009 Cakes
本题BZOJ权限题,但在bzojch上可以看题面. 题意: N个点m条无向边,每个点有一个点权a. 对于任意一个三元环(i,j,k)(i<j<k),它的贡献为max(ai,aj,ak) 求 ...
- Google题解
Kickstart2017 RoundB B.题意: 二维平面上有n个点, 每个点坐标(xi, yi), 权值wi, 问: 在平面上找一点p, 使得 Σwi*max(|X-xi|, |Y-yi|)最小 ...
- 51nod 1290 Counting Diff Pairs | 莫队 树状数组
51nod 1290 Counting Diff Pairs | 莫队 树状数组 题面 一个长度为N的正整数数组A,给出一个数K以及Q个查询,每个查询包含2个数l和r,对于每个查询输出从A[i]到A[ ...
- GDOI2018记录
说实话,直到初三暑假升高一的时候,我才开始形成竞赛观.那时才顿觉一年的各个比赛是多么重要. 紧接着我的NOIP就直接爆炸了.这意味着我一年也完蛋了.各种人去WC,然后我留在家里. 那GDO ...
- 【poj3016】 K-Monotonic
http://poj.org/problem?id=3016 (题目链接) 题意 给出一个数列,将一个数${a_i}$更改为${b_i}$的代价为${|a_i-b_i|}$.求将数列改为不递减的最小代 ...