首先,由于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的数据类型转换
- Author -
jingxian声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@