全面了解JavaScript的数据类型转换


Posted in Javascript onJuly 01, 2016

 首先,由于JavaScript是弱类型语言(弱类型的语言的东西没有明显的类型,他能随着环境的不同,自动变换类型而强类型则没这样的规定,不同类型间的操作有严格定义,只有相同类型的变量才能操作,虽然系统也有一定的默认转换,当绝没有弱类型那么随便,也就是说变量在声明时不需要指定数据类型,变量由赋值操作确定数据类型),所以在JavaScript的类型转换中就存在了强类型语言所没有的隐式转换。

1.1 JavaScript中的隐式转换(自动类型转换)

简单定义: 不同数据类型的数据在做运算的时候可以进行默认的数据类型的转换。
隐式转换通常遵循以下几点规则:

1.数字+字符串:数字转换为字符串。

var n1=12;//number类型
  var n2="12";//string类型
  console.log(n1+n2);//结果为string类型的"1212"

2.数字+布尔值:true转换为1,false转换为0。

var n1=12;//number类型
  var n2=true;//布尔类型
  console.log(n1+n2)//结果为13

 3.字符串+布尔值:布尔值转换为true或者false。

var n1="Hello";//string类型
  var n2=true;
  console.log(n1+n2);//结果为string类型的"Hellotrue"

4.布尔值+布尔值

var n1=true;
  var n2=true;
  console.log(n1+n2);//运行结果为2;

对于上面的案例得到的结果,不确信输出类型的小伙伴可以通过typeof()方法来查看变量的当前类型。

console.log(typeof(11));//number
  console.log(typeof("11"));//string
  console.log(typeof(true));//boolean

1.2 数据类型转换函数

JavaScript中有隐式转换,相对应的就会有显式转换,想要进行显式转换就需要用到下面的几个函数:

1. toString()

---->转换为字符串,在JavaScript中所有数据类型都可以转换为string类型

var n1="12";
  var n2=true;
  var n11=toString(n1);
  var n22=toString(n2);
  console.log(typeof(n11));//得到的结果为string
  console.log(typeof(n22));//得到的结果为string

2.parseInt()

---->解析出一个string或者number类型的整数部分,如果没有可以转换的部分,则返回NaN(not a number)

var n1="12";
  var n2="12han";
  var n3="Hello";
  var n11=parseInt(n1);
  var n22=parseInt(n2);
  var n33=parseInt(n3);
  console.log(n11);//得到的结果为12
  console.log(n22);//得到的结果为12
  console.log(n33);//得到的结果为NaN

运行上面的代码我们不难看出,变量n1 n2 n3转换后的数据类型都是number,但是其中通过函数parseInt()得到的函数n33并不是我们认识的number类型数值,而是为NAN,这就不难看出NaN虽然不是一个数字,但是属于数字类型,只是不能应用到普通数字的任何算法,是一个比较特殊的存在。(后面的博文中会有提到,再次不做赘述)

3.parseFloat()

---->解析出一个string的浮点数部分,如果没有可以转换的部分,则返回NaN(not a number)。

var n1="12.4.5";
  var n2="12.4han";
  var n3="Hello";
  var n11=parseFloat(n1);
  var n22=parseFloat(n2);
  var n33=parseFloat(n3);
  console.log(n11);//得到的结果为12.4
  console.log(n22);//得到的结果为12.4
  console.log(n33);//得到的结果为NaN

通过上面的例子我们可以得出parseFloat()该函数的返回值确实是一个数字,但从几个变量的纵向比较中我们不难看出该函数在遇到第二个小数点之后就不做转换了,此处需特别注意。

以上这篇全面了解JavaScript的数据类型转换就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用javascript来实现动画导航效果的代码
Dec 16 Javascript
js 获取浏览器版本以此来调整CSS的样式
Jun 03 Javascript
详解JavaScript的回调函数
Nov 20 Javascript
Javascript HTML5 Canvas实现的一个画板
Apr 12 Javascript
Bootstrap弹出带合法性检查的登录框实例代码【推荐】
Jun 23 Javascript
js实现表格筛选功能
Jan 18 Javascript
JS与jQuery实现子窗口获取父窗口元素值的方法
Apr 17 jQuery
详解如何构建一个Angular6的第三方npm包
Sep 07 Javascript
微信小程序调用微信支付接口的实现方法
Apr 29 Javascript
JavaScript:ES2019 的新特性(译)
Aug 08 Javascript
Angular单元测试之事件触发的实现
Jan 20 Javascript
Node.js API详解之 assert模块用法实例分析
May 26 Javascript
全面解析JS字符串和正则表达式中的match、replace、exec等函数
Jul 01 #Javascript
浅谈JavaScript中的分支结构
Jul 01 #Javascript
Bootstrap下拉菜单效果实例代码分享
Jun 30 #Javascript
Bootstrap图片轮播组件使用实例解析
Jun 30 #Javascript
Bootstrap编写一个在当前网页弹出可关闭的对话框 非弹窗
Jun 30 #Javascript
Bootstrap编写一个同时适用于PC、平板、手机的登陆页面
Jun 30 #Javascript
jQuery获取table行数并输出单元格内容的实现方法
Jun 30 #Javascript
You might like
php中替换字符串中的空格为逗号','的方法
2014/06/09 PHP
PHP使用JSON和将json还原成数组
2015/02/12 PHP
ThinkPHP5框架缓存查询操作分析
2018/05/30 PHP
PHP使用XMLWriter读写xml文件操作详解
2018/07/31 PHP
PHP图像处理技术实例总结【绘图、水印、验证码、图像压缩】
2018/12/08 PHP
文本框获得焦点和失去焦点的判断代码
2012/03/18 Javascript
JS案例分享之金额小写转大写
2014/05/15 Javascript
基于jquery的手风琴图片展示效果实现方法
2014/12/16 Javascript
js实时获取并显示当前时间的方法
2015/07/31 Javascript
jquery+ajax实现注册实时验证实例详解
2015/12/08 Javascript
JS实现侧边栏鼠标经过弹出框+缓冲效果
2017/03/29 Javascript
微信小程序之前台循环数据绑定
2017/08/18 Javascript
Angular2+国际化方案(ngx-translate)的示例代码
2017/08/23 Javascript
基于vue cli重构多页面脚手架过程详解
2018/01/23 Javascript
jQuery实现文件编码成base64并通过AJAX上传的方法
2018/04/12 jQuery
nodejs前端模板引擎swig入门详解
2018/05/15 NodeJs
JS实现简单的星期格式转换功能示例
2018/07/23 Javascript
vue+axios实现文件下载及vue中使用axios的实例
2018/09/21 Javascript
Vue 2.0双向绑定原理的实现方法
2019/10/23 Javascript
玩转python爬虫之正则表达式
2016/02/17 Python
Python虚拟环境virtualenv的安装与使用详解
2017/05/28 Python
windows10下python3.5 pip3安装图文教程
2018/04/02 Python
python Flask 装饰器顺序问题解决
2018/08/08 Python
python使用suds调用webservice接口的方法
2019/01/03 Python
python实现创建新列表和新字典,并使元素及键值对全部变成小写
2019/01/15 Python
Python 实现使用空值进行赋值 None
2020/03/12 Python
浅谈多卡服务器下隐藏部分 GPU 和 TensorFlow 的显存使用设置
2020/06/30 Python
大数据分析用java还是Python
2020/07/06 Python
Python常用断言函数实例汇总
2020/11/30 Python
物业招聘计划书
2014/01/10 职场文书
锦旗标语大全
2014/06/23 职场文书
大学第二课堂活动总结
2014/07/08 职场文书
公司会议开幕词
2015/01/29 职场文书
golang中的空接口使用详解
2021/03/30 Python
详解GaussDB for MySQL性能优化
2021/05/18 MySQL
MySQL不使用order by实现排名的三种思路总结
2021/06/02 MySQL