全面了解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脚本实现Web页面信息交互
Dec 21 Javascript
ajax上传时参数提交不更新等相关问题
Dec 11 Javascript
关于火狐(firefox)及ie下event获取的两种方法
Dec 27 Javascript
JQuery EasyUI 日期控件如何控制日期选择区间
May 05 Javascript
js日期范围初始化得到前一个月日期的方法
May 05 Javascript
jQuery实现右侧显示可向左滑动展示的深色QQ客服效果代码
Oct 23 Javascript
JavaScript jquery及AJAX小结
Jan 24 Javascript
解决bootstrap中使用modal加载kindeditor时弹出层文本框不能输入的问题
Jun 05 Javascript
vue组件 $children,$refs,$parent的使用详解
Jul 31 Javascript
浅谈vue项目可以从哪些方面进行优化
May 05 Javascript
JavaScript两种计时器的实例讲解
Jan 31 Javascript
小程序如何在不同设备上自适应生成海报的实现方法
Aug 20 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
在线增减.htpasswd内的用户
2006/10/09 PHP
PHP四舍五入、取整、round函数使用示例
2015/02/06 PHP
PHP实现的AES双向加密解密功能示例【128位】
2018/09/03 PHP
Javascript Function对象扩展之延时执行函数
2010/07/06 Javascript
浅谈Javascript Base64 加密解密
2014/12/28 Javascript
jquery插件jquery.nicescroll实现图片无滚动条左右拖拽的方法
2015/08/10 Javascript
基于JavaScript实现根据手机定位获取当前具体位置(X省X市X县X街道X号)
2015/12/29 Javascript
JavaScript中的对象和原型(一)
2016/08/12 Javascript
利用Angular.js限制textarea输入的字数
2016/10/20 Javascript
jQuery的ajax中使用FormData实现页面无刷新上传功能
2017/01/16 Javascript
关于Javascript中document.cookie的使用
2017/03/08 Javascript
vue mint-ui 实现省市区街道4级联动示例(仿淘宝京东收货地址4级联动)
2017/10/16 Javascript
解决bootstrap中下拉菜单点击后不关闭的问题
2018/08/10 Javascript
详解小程序不同页面之间通讯的解决方案
2018/11/23 Javascript
vue-cli2 构建速度优化的实现方法
2019/01/08 Javascript
谈谈JavaScript中super(props)的重要性
2019/02/12 Javascript
vue获取时间戳转换为日期格式代码实例
2019/04/17 Javascript
20道JS原理题助你面试一臂之力(必看)
2019/07/22 Javascript
基于javascript实现贪吃蛇经典小游戏
2020/04/10 Javascript
Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法
2018/02/18 Python
python处理自动化任务之同时批量修改word里面的内容的方法
2019/08/23 Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
2020/12/24 Python
Waterford加拿大官方网站:世界著名的水晶杯品牌
2016/11/01 全球购物
eDreams澳大利亚:预订机票、酒店和度假产品
2017/04/19 全球购物
华为慧通面试题
2012/09/11 面试题
最新奶茶店创业计划书范文
2014/02/08 职场文书
优质服务活动实施方案
2014/05/02 职场文书
2014购房个人委托书范本
2014/10/12 职场文书
工伤事故赔偿协议书
2014/10/27 职场文书
2014年药剂科工作总结
2014/11/26 职场文书
《最后一头战象》读后感:动物也有感情
2020/01/02 职场文书
Python的这些库,你知道多少?
2021/06/09 Python
Redis三种集群模式详解
2021/10/05 Redis
MySQL视图概念以及相关应用
2022/04/19 MySQL
Python如何加载模型并查看网络
2022/07/15 Python
MySQL count(*)统计总数问题汇总
2022/09/23 MySQL