02-JavaScript变量的强制类型转换
前言
强制类型转换:将一个数据类型强制转换为其他的数据类型。
类型转换主要指,将其他的数据类型,转换为:String
、Number
、Boolean
。你会把某个数据类型转换成 null
或者 undefined
吗?不会,因为这样做,没有意义。
其他的简单类型 --> String
方法一:变量+"" 或者 变量+"abc"
举例如下:
var a = 123; // Number 类型
console.log(a + ''); // 转换成 String 类型
console.log(a + 'haha'); // 转换成 String 类型
上面的例子中,打印的结果,都是字符串类型的数据。
方法二:调用toString()方法
举例如下:
变量.toString()
【重要】该方法不会影响到原变量,它会将转换的结果返回。当然我们还可以直接写成a = a.toString()
,这样的话,就是直接修改原变量。
注意:null
和undefined
这两个值没有toString()
方法,所以它们不能用方法二。如果调用,会报错。
另外,Number类型的变量,在调用toString()
时,可以在方法中传递一个整数作为参数。此时它将会把数字转换为指定的进制,如果不指定则默认转换为10进制。例如:
var a = 255;//对于Number调用toString()时可以在方法中传递一个整数作为参数//此时它将会把数字转换为指定的进制,如果不指定则默认转换为10进制a = a.toString(2);console.log(a); // 11111111console.log(typeof a); // string
方法三:使用String()
函数
格式如下:
String(变量)
使用String()
函数做强制类型转换时:
对于
Number
和Boolean
而言,实际上就是调用toString()
方法。但是对于
null
和undefined
,就不会调用toString()
方法。它会将null
直接转换为"null"
。将undefined
直接转换为"undefined"
。
prompt():用户的输入
我们在JS基础的第一篇里,就讲过,prompt()
就是专门用来弹出能够让用户输入的对话框。重要的是:用户不管输入什么,都是字符串。
其他的数据类型 --> Number
方式一:使用Number()
函数
情况一:字符串 --> 数字
1.如果字符串中是纯数字,则直接将其转换为数字。
2.如果字符串中有非数字的内容,则转换为
NaN
。(此处可以看到Number()函数的局限性)3.如果字符串是一个空串或者是一个全是空格的字符串,则转换为0。
情况二:布尔 --> 数字
true 转成 1
false 转成 0
情况三:null --> 数字
- 结果为:0
情况四:undefined --> 数字
- 结果为:NaN
方式二:parseInt()
:字符串 -> 整数【重要】
parseInt()
是专门用来对付字符串的。
parseInt()的作用是将字符串中的有效的整数内容转为数字。parse表示“转换”,Int表示“整数”(注意Int
的拼写)。例如:
parseInt("5");
得到的结果是数字5。
parseInt()
还具有以下特性:
(1)只保留字符串最开头的数字,后面的中文自动消失。例如:
console.log(parseInt("2017在公众号上写了6篇文章")); //打印结果:2017console.log(parseInt("2017.01在公众号上写了6篇文章")); //打印结果仍是:2017 (说明只会取整数)console.log(parseInt("aaa2017.01在公众号上写了6篇文章")); //打印结果:NaN
(2)自动带有截断小数的功能:取整,不四舍五入。
例1:
var a = parseInt(5.8) + parseInt(4.7);console.log(a);
控制台输出:9
例2:
var a = parseInt(5.8 + 4.7);console.log(a);
控制台输出:10
(3)如果对非String使用parseInt()
或parseFloat()
,它会先将其转换为String然后再操作。
比如:
var a = true;console.log(parseInt(a)); //打印结果:NaN (因为是先将a转为字符串"true",然后然后再操作)var b = null;console.log(parseInt(b)); //打印结果:NaN (因为是先将b转为字符串"null",然后然后再操作)var c = undefined;console.log(parseInt(c)); //打印结果:NaN (因为是先将b转为字符串"undefined",然后然后再操作)var d = 168.23;console.log(parseInt(d)); //打印结果:168 (因为是先将c转为字符串"168.23",然后然后再操作)
(4)带两个参数时,表示进制转换。
parseFloat()
:字符串 --> 浮点数(小数)
parseFloat()
是专门用来对付字符串的。
parseFloat()
的作用是:将字符串转换为浮点数。
parseFloat()
和parseInt()
的作用类似,不同的是,parseFloat()
可以获得有效的小数部分。
代码举例:
var a = '123.456.789px';console.log(parseFloat(a)); // 打印结果:123.456
转换为 Boolean
将其他的数据类型转换为Boolean,可以使用Boolean()
函数。
情况一:数字 --> 布尔。除了0和NaN,其余的都是true。
情况二:字符串 —> 布尔。除了空串,其余的都是true。
情况三:null和undefined都会转换为false。
情况四:对象也会转换为true。
PS:转换为 Boolean 的这几种情况,很重要,开发中会经常用到。
其他进制的数字
16进制的数字,以
0x
开头8进制的数字,以
0
开头2进制的数字,
0b
开头(不是所有的浏览器都支持:chrome和火狐支持,IE不支持)
比如070
这个字符串,如果我调用parseInt()转成数字时,有些浏览器会当成8进制解析,有些会当成10进制解析。
所以,比较建议的做法是:可以在parseInt()中传递第二个参数,来指定数字的进制。例如:
a = "070";a = parseInt(a,10); //转换成十进制
02-JavaScript变量的强制类型转换相关推荐
- Javascript基础之-强制类型转换(三)
这一节,应该算是强制类型转换的最后一个小节了,这一部分呢,主要会讲比较操作中遇到的强制类型转换. 抽象相等(==)和严格相等(===). 简单且粗略的来说,抽象相等和严格相等的区别就是抽象相等在比较的 ...
- JavaScript 中的强制类型转换
JavaScript 作为一个动态编程语言,其中的数据类型会随着程序运行而动态改变.对于很多人来说,强制类型转换很容易造成程序出错,而要记住所有的转换方式又是一件不那么容易的事情.比如下面这张 Jav ...
- Javascript基础之-强制类型转换(一)
转换为字符串规则如下图代码: console.log(String(undefined)); // "undefined" console.log(String(null)); / ...
- (基础)JavaScript类型转换(强制类型转换+隐式类型转换)
JavaScript 中有五种基本数据类型(其中包括 String.Number.Boolean.Function.Symbol).三种对象类型(其中包括 Object.Date.Array)和两种 ...
- JavaScript中的强制类型转换规则
JavaScript中的类型从来都不是在定义的时候就确定的,而是在运行期间确定的 JavaScript中的强制类型转换总是返回基本类型值 JavaScript中常见的转换就是向数字.字符串.布尔值进行 ...
- JS强制类型转换和隐式类型转换
一.隐式类型转换 隐式类型转换会自动根据运算符进行类型转换.隐式类型转换的情况主要有以下几种. 如果表达式中同时存在字符串类型和数字类型的操作数,而运算符使用加号+,此时 JavaScript 会自动 ...
- 谁说 C++ 的强制类型转换很难懂?
作者 | 樱雨楼 责编 | 屠敏 出品 | CSDN(ID:CSDNnews) 在上篇与中篇中,我们讨论了隐式类型转换及其与函数重载之间的相关话题.本篇将要讨论的即为类型转换的另一大分支--强制类型转 ...
- Java类型转换(自动类型转换+强制类型转换)
一. 自动类型转换(隐式类型转换) 整型.实型(常量).字符型数据可以混合运算.运算中,不同类型的数据先转化为同一类型,然后进行运算. 自动转换从低级到高级. 自动转换有以下规律: 1.小的类型自动转 ...
- Java引用类型的强制类型转换
正如有时候需要将浮点型的数值转换为整型数值一样,有时候也可能需要将某个类的对象引用转换成两外一个类的对象引用. 进行强制类型转换的唯一原因是:在暂时忽视对象的实际类型之后,使用对象的全部功能. 编写J ...
最新文章
- Linux下开发优秀链接
- 2005国际通信展将于10月18-22日举行
- Tomcat8源码编译及导入Eclipse中研究
- 什么行业需要java_java开发可以从事什么行业
- 操作系统短作业优先(SJF)调度算法
- matepad适配鸿蒙,消息称华为 MatePad2 搭载骁龙888 4G 华为鸿蒙OS计划适配高通平台...
- 迁移python虚拟环境搭建_python虚拟环境virtualenv创建与迁移
- 【实战】烂泥:XP系统的共享,你究竟知道
- 旅游网站php源码,基于ThinkPHP框架开发的青春旅行旅游门户整站PHP源码
- kitserver 6.33 完全简体中文版补丁
- 科技感人工智能PPT模板推荐
- Separating Axis Theorem(分离轴理论)Raycast
- 用c语言计算正四棱锥的体积,刘徽与正四棱台体积的计算
- IDEA集成docker-maven-plugin配置CA安全证书
- 反转单链表(C语言)
- Php狼找兔子,狼和兔子的故事 - 仙境传说:守护永恒的爱 - 普隆德拉酒馆 - 心动游戏 官方论坛...
- Java生成指定范围的随机数
- 简介表格让你牢牢记住spring的7种事务传播机制
- python 7-8 对于给定的正整数N,求它的位数及其各位数字之和。 (15 分)
- 《Educated》《你当像鸟飞往你的山》阅读笔记