JavaScript强制类型转换(二)

  • 方式一:调用 Number()函数
  • String字符串
  • Boolean值
  • null和undefined
  • 方式二:调用parseInt()函数
  • 使用要点
  • 局限性
  • 方式三:调用parseFloat()函数
  • 使用要点
  • 两个函数转换其他类型数据
  • 方式四:使用算术运算符
  • 使用要点

将其他数据类型转换为Number数值型

方式一:调用 Number()函数

通过传参重赋值的方式,将各种类型的值转换为number数值型。
各类型转换结果:

String字符串

使用要点:

  1. 如果是纯数字的字符串,则直接将其转换为数字;
  2. 如果字符串有非数字的内容,则转换为NaN;
  3. 如果字符串是一个空串或者是一个全是空格的字符串,则转换为0;

Boolean值

true转换为1,false转换为0;

null和undefined

null值转换为0,undefined转换为NaN;

演示代码
// 调用Number()0函数将a转换为Number类型

		// 字符串
		var a = "123";
		a = Number(a);

		console.log("字符串a转换后类型 = " + typeof a);
		console.log("字符串a转换后的值 = " + a);

		// 布尔值 true
		a = true;
		a = Number(a);

		console.log("布尔值a转换后类型 = " + typeof a);
		console.log("布尔值a转换后的值 = " + a);

		// 布尔值 false
		a = false;
		a = Number(a);

		console.log("布尔值a转换后类型 = " + typeof a);
		console.log("布尔值a转换后的值 = " + a);

		// 特殊类型 null
		a = null;
		a = Number(a);

		console.log("null a转换后类型 = " + typeof a);
		console.log("null a转换后的值 = " + a);

		// 特殊类型 undefined
		a = undefined;
		a = Number(a);

		console.log("undefined a转换后类型 = " + typeof a);
		console.log("undefined a转换后的值 = " + a);
预览结果

javascript 强转int_javascript 强转int

方式二:调用parseInt()函数

在使用Number()函数转换非纯数字字符串时,有时会出现无法转换的结果,此时返回值会变成NaN,即非数值型,例如:

a = "193px";
		a = Number(a);

		console.log("字符串a转换后类型 = " + typeof a);
		console.log("字符串a转换后的值 = " + a);

结果为:

javascript 强转int_javascript_02


虽然类型确实转换为number数值型,但是并没有将数据保留下来。此时,我们就可以使用parseInt()函数或者parseFloat()函数来进行类型转换。

使用要点

  1. 专门用来适配字符串的转换;
  2. parseInt()可以将一个字符串中的有效的整数内容取出来,然后转换为Number;

例如:

// 调用parseInt()函数转换特殊字符串
		a = "193px";
		a = parseInt(a);

		console.log("字符串a转换后类型 = " + typeof a);
		console.log("字符串a转换后的值 = " + a);

结果:

javascript 强转int_字符串_03

局限性

但是,parseInt()函数遇到带有小数点的特殊字符串时,还是存在一定的限制

a = "193.123px";
		a = parseInt(a);

		console.log("字符串a转换后类型 = " + typeof a);
		console.log("字符串a转换后的值 = " + a);

javascript 强转int_字符串_04


在这段代码里,我们想要获得的是在px之前,包括小数点之后的全部有效数字;但是,由于parseInt()函数的局限性,我们只能提取到整数的部分。

那么这个时候就需要使用到它的兄弟函数,parseFloat()了。

方式三:调用parseFloat()函数

使用要点

  1. 把一个字符串串转换为一个浮点数;
  2. 作用和parseInt()类似,不同的是它可以获取有效的小数;

例如:

// 调用parseFloat()函数转换特殊字符串
		a = "193.123px";
		a = parseFloat(a);

		console.log("字符串a转换后类型 = " + typeof a);
		console.log("字符串a转换后的值 = " + a);

结果:

javascript 强转int_字符串_05


值得注意的是,这里说的能够进行提取的携带数字的字符串,它所携带的一定要为有效的字符串,一些不符合数值型应有格式的数字还是只会提取出有效的部分。

如下演示,一个携带有两个小数点的数字字符串

a = "193.123.456px";
		a = parseFloat(a);

		console.log("字符串a转换后类型 = " + typeof a);
		console.log("字符串a转换后的值 = " + a);

结果:

javascript 强转int_类型转换_06

两个函数转换其他类型数据

如果对非String使用parseInt()或parseFloat() 它会先将其转换为String,然后再操作;

例如:

var a = true;
		a = parseInt(a);

		console.log("a转换后类型 = " + typeof a);
		console.log("a转换后的值 = " + a);

		a = false;
		a = parseInt(a);

		console.log("a转换后类型 = " + typeof a);
		console.log("a转换后的值 = " + a);

		a = null;
		a = parseInt(a);

		console.log("a转换后类型 = " + typeof a);
		console.log("a转换后的值 = " + a);

		a = undefined;
		a = parseInt(a);

		console.log("a转换后类型 = " + typeof a);
		console.log("a转换后的值 = " + a);

结果:

javascript 强转int_javascript 强转int_07


因为转换后的字符串不存在有效数字部分,所以结果都为NaN(非数值型);

方式四:使用算术运算符

使用要点

  1. 当对非number类型的值进行运算时,会先将值转换为number再进行运算;
  2. 任何值和NaN进行运算,结果都是NaN;
  3. 在同字符串进行算术运算时,除了+加法会出现拼接字符串的情况,其它运算符,包括 - * / 在内都是先将字符串转换为number数值再进行运算;
  4. 任何值做 - * / 运算时都会自动转换为number,我们可以利用这一特点做隐式的类型转换,可以通过为一个值 -0 *1 /1 来将其转换为number,原理和Number()函数一样,但是使用时更加简单;

虽然使用方法简单,但不推荐使用,所以这里就不做演示了。只要记住,使用时进行的算数运算不能会是影响到原始值的运算即可。