JavaScript学习笔记三 :强制类型转换

一、强制类型转换

1.定义

  • 将一个数据类型强制转换成另一个数据类型。主要是指将其他的数据类型转换成String、Number、Boolean。

2.将其他数据类型转换为String

(1)方法一:调用toString()方法

  • 调用需要转换数据类型变量的toString()方法,该方法并不会影响到原来的变量的数据类型。
  • 需要重新去定义一个新变量,把被转换换数据类型变量的toString()方法的值赋值给新变量,那么新变量的数据类型就是String类型了。或者再次重新赋值给a,刷新a的数据类型。

但是当变量的数据类型为Null或者Undefined这两个值时,这个变量在调用toString方法时会报错。
所以方法一只适用于String、Number、Boolean的类型转换。

语法:调用xxx的yyy()方法:xxx.yyy();

var a=123;//当前a的数据类型是number
var b=a.toString();//调用a的tostring方法去转换类型,定义新变量b,把a转换之后的类型赋值给b
console.log(typeof a);//结果a还是number类型
console.log(typeof b);//结果b是string类型
var a=123;//当前a的数据类型是number
a=a.toString();//调用a的tostring方法去转换类型然后直接赋值给a,刷新a的数据类型
console.log(typeof a);//结果a就是string类型
  1. 当我们直接在页面中打印一个对象时,实际上是输出的对象的toString()方法的返回值。
  2. toString()方法在对象的原型的原型中。
  3. 如果希望在输出对象时,希望不输出[object object],可以为对象添加一个toString()方法,确定其返回值。
per.toString=function(){
    
    
  return "我是小per";
}

这样只是修改了一个实例中的toString方法,想要所有的实例都修改,就想原型对象中修改。

Person.prototype.toString=function(){
    
    
  return "Person[name="+this.name];
}

(2)方法二:调用String()函数

  • 调用String()函数,并将被转换的数据作为参数传递给函数。
  • 该函数同样不会影响当前变量的函数类型
  • 调用xxx()函数:语法:xxx();转谁谁就写括号里。
var a=123;//当前a的数据类型是number
console.log(typeof a);//结果a还是number类型
a=String(a);//调用String函数转换数据类型赋值给a,刷新了a的数据类型
console.log(typeof a);//结果a变成String类型

使用String()函数转换数据类型时
对于Number和Boolean来说和使用toString()方法没区别
对于Null和Undefined来说,不会调用toString()方法
它会将null直接转换成"null"
将undefined直接转换成"undefined"

(3)方法三:任意值类型+空串

任何值做加法运算时,首先将非字符串的类型转换成字符串类型,将任意值类型加上空串"",就可以将任意值的类型转换为字符串String类型。这是一种隐式的类型转换,由浏览器自动完成,实际上也是调用了String()函数。

            var a=123;//number类型
			a=a+"";//和空串相加
			console.log(a);
			console.log(typeof a);//输出类型为String类型

3.将其他数据类型转换为Number

(1)方法一:调用Number()函数

  • 调用Number()函数,并将被转换的数据作为参数传递给函数。

  • 使用Number()函数进行类型转换时:
    1. 字符串====>>数字:

    (1).如果是纯数字的字符串,那么就直接转换成数字
    (2).如果字符串里面有非数字,则转换为NaN
    (3).如果字符串是空的或者都是空格,则转换结果为0
    
var a="123";//当前a的数据类型是string
a=Number(a);//调用Number函数转换数据类型赋值给a,刷新了a的数据类型
console.log(typeof a);//结果a变成Number类型
console.log(a);//结果为123,开始赋值不同,这里结果就会不同NaN/0
  • 布尔值====>>数字:

       (1).如果布尔值为true,那么转换结果是1
       (2).如果布尔值为false,那么转换结果是0
    
var a=true;//当前a的数据类型是Boolean
a=Number(a);//调用Number函数转换数据类型赋值给a,刷新了a的数据类型
console.log(typeof a);//结果a变成Number类型
console.log(a);//a的结果是1
  • Null====>>数字:结果就是0
  • Undefined====>>数字:结果是NaN

(2)方法二:用于字符串

  • 这种方式专门用来对付字符串
  • parseInt()函数:把字符串转换成一个整数
  • paserFloat()函数:把字符串转换成一个浮点数
var a="123px";//a是字符串
a=parseInt(a);//parseInt()函数
console.log(typeof a);//类型是number
console.log(a);//结果是123
var a="123.345px";//a是字符串
a=paserFloat(a);//paserFloat()函数
console.log(typeof a);//类型是number
console.log(a);//结果是123.345

parseInt()函数可以将字符串中有效的整数内容取出来,然后转换为Number
paserFloat函数用法和parseInt类似,它可以将字符串有效的小数内容取出来。

  • 对于非String类型使用 parseInt()函数、paserFloat()函数,它会先将其转换成String类型然后再进行操作。

(3)任何值做-0;*1;/1运算

任何值做减、乘、除运算时,都会将值先转换成Number类型。运算后的返回值类型也是Number类型,我们可以运用这一特点进行类型转换,将数值进行-0;*1;/1得到的结果不变,值的类型转换为Number类型了。原理和Number()函数一样,使用起来更加简单一点。

            var a="123";
			var b=a-0;//var b=a*1;var b=a/1;减法,乘法,除法操作
			console.log(b);//结果是123
			console.log(typeof b);//数据类型是number

(4)方法四:数据类型使用“+正号”

可以对其他数据类型使用“+正号”使其变成Number类型。原理和Number()函数一样

           var a="123";//字符串类型
			var b=+a;//用“+”
			console.log(b);//123
			console.log(typeof b);//number

4.将其他数据类型转换为Boolean

(1)方法一:调用Boolean()函数

  • 数字====>>Boolean:除了0和NaN,其余都是true。
  • 字符串====>>布尔值:除了空串,其余都是true
  • Null和Undefined转换成布尔值都是false。
  • 对象也会转换成true。

(2)方法二:对非布尔值进行非运算

  • 如果对一个值进行两次取反操作,则该值不变。
  • 如果对非布尔值进行非运算,则会将其转换为布尔值,然后再取反,所以我们可以利用该特点,可以将一个其他的数据类型转换为布尔值类型,可以为一个任意数据类型取两次反,来将其转换为布尔值
var a="1";//a是字符串
a=!!a;//两次取反
console.log(a);//true
console.log(typeof a);//boolean

猜你喜欢

转载自blog.csdn.net/weixin_45636381/article/details/112391852