葵花宝典之JavaScript基础(总计18章)第5章

持续更新中,每天一章,带你学习JavaScript基础,有问题大家评论区留言。

目录

第5章  数据类型转换

  5.1  强制类型转换

        ​​​​​​​5.1.1    其它类型转数字

 ​​​​​​​        5.1.3    其它类型转布尔值

​​​​​​​5.2  手动类型转换

​​​​​​​5.3    隐式类型转换

​​​​​​​5.3.1  同种数据类型之间的运算、比较和判等

​​​​​​​5.3.2  不同数据类型之间的运算、比较和判等 

 ​​​​​​​5.4    类型转换总结


第5章  数据类型转换

  5.1  强制类型转换

        ​​​​​​​5.1.1    其它类型转数字

Number() 强制将一个其它类型数据转化为数字类型,转不了就是NaN。

NaN(not a number)是数字类型,但NaN不是一个数字。

  1. 转化字符串
    1. 如果字符串整体来看是一个数字,那么就转化为这个数字。
    2. 如果字符串整体来看不是一个数字,那么就转化为NaN。
    3. 如果字符串是一个特殊的空字符串或者空白字符串,那么转化为0。
  2. 转化boolean
    1. true会转化为1。
    2. false会转化为0。
  3. 转化undefined      undefined会转化为NaN。
  4. 转化null                null会转化为0。 

 

//1)字符串转数字
var str = 'ajsdg赵丽颖';//NaNstr = '132quyeqoiu123';//NaN
str = '   -1.234';//数字-1.234
str = '     ';//0
str = '';//0
str = 'null';
console.log(Number(str));
//2)布尔值转化数字
var bool = true;//1
bool = false;//0
var result = Number(bool);
console.log(result);
//3)undefined转数字
var und;//NaN
var result = Number(und);
console.log(result);
//4)null转数字
var nul = null;//0
var result = Number(nul);
console.log(result);

        ​​​​​​​5.1.2    其它类型转字符串

String() 强制将一个其它类型数据转化为字符串类型。

转化字符串没有什么特殊,给任何值,都会把这个值加引号变为字符串。

//1)数字转字符串
var num = 100;
var result = String(num);
console.log(result);
//2) 布尔值转字符串
var bool = false;
var result = String(bool);
console.log(result);
//3) undefined转字符串
var und;
var result = String(und);
console.log(result);
//4) null转化字符串
var nul = null;
var result = String(nul);
console.log(result);

 ​​​​​​​        5.1.3    其它类型转布尔值

Boolean() 强制将一个其它类型数据转化为布尔类型

  1. 转化数字的时候,除了0NaNfalse,其余都是true。
  2. 转化字符串的时候,除了空字符串false,其余都是true。
  3. 转化undefinednull都是false。
//1)数字转布尔
//除了0和NaN是false,其余都是true
var num = NaN;
var result = Boolean(num);
console.log(result);
//2)字符串转布尔值
//非空即为真
var str = 'asdfghald打包会计师';
str = '1234124';
str = '    ';
str = '';
var result = Boolean(str);
console.log(result);
//3)undefined转布尔  就是false
var und;
var result = Boolean(und);
console.log(result);
//4)null转布尔  就是false
var nul = null;
var result = Boolean(nul);
console.log(result);

​​​​​​​5.2  手动类型转换

其实手动类型转换,就是从字符串当中提取数字,不是数字会先转化为数字。

注意:字符串要求数字字符必须在字符串的前面(前面可以有空白字符),否则就是NaN。

parseInt()      用来提取整数。

parseFloat()    用来提取浮点数(小数)。

var str = '     112.2.3wUYGSKJFAKads';
var result = parseInt(str);
console.log(result);
result = parseFloat(str);
console.log(result);

 

​​​​​​​5.3    隐式类型转换

各种类型在适当的场合会发生隐式转换

主要是运算、比较及判等过程中

​​​​​​​5.3.1  同种数据类型之间的运算、比较和判等

  1. 数字和数字
//数字和数字之间运算 比较  判等   都是该怎么算怎么算,没有任何坑;
var a = 10;
var b = 20;
//算术运算
console.log(a + b);
console.log(a - b);
console.log(a * b);
console.log(a / b);
console.log(a % b);
//比较
console.log(a > b);
console.log(a < b);
console.log(a >= b);
console.log(a <= b);
//判等
console.log(a == b);
console.log(a != b);

//下面都是了解
//数字的运算小数是不准确的,目前无法避免
console.log(0.1 + 0.2);
console.log(0/1);//0
console.log(1/0);//Infinity
console.log(-1/0);//-Infinity
console.log(0/0);//NaN
console.log(1%0);//NaN
console.log(0%0);//NaN
console.log(0%1);//0
//js当中能表示的最大值和最小值
console.log(Number.MAX_VALUE);
console.log(Number.MIN_VALUE);

        2. 字符串和字符串

var str1 = 'abc';
var str2 = 'acc';
//运算 除了+是拼接字符串,其余转数字
console.log(str1 + str2);//拼接字符串
console.log(str1 - str2);
console.log(str1 * str2);
console.log(str1 / str2);
console.log(str1 % str2);
//比较 
//两个字符串比较 比较的是字符的Unicode码从左左到右依次比较每个字符,出现大小的结果就停止;
//0   48
//a   97
console.log(str1 > str2);
console.log(str1 < str2);
console.log(str1 >= str2);
console.log(str1 <=str2);
//判等
//同种数据在判等的时候,不会发生任何转化,就看两边一样不一样,一样就是相等,不一样就不相等;
console.log(str1 == str2);
console.log(str1 != str2);

        3.  布尔和布尔

布尔和布尔
var bool1 = true;
var bool2 = false;
//运算,全部转数字
console.log(bool1 + bool2);
console.log(bool1 - bool2);
console.log(bool1 * bool2);
console.log(bool1 / bool2);
console.log(bool1 % bool2);

//比较,全部转数字
console.log(bool1 > bool2);
console.log(bool1 < bool2);
console.log(bool1 >= bool2);
console.log(bool1 <= bool2);

//同种数据在判等的时候,不会发生任何转化,就看两边一样不一样,一样就是相等,不一样就不相等
console.log(bool1 == bool2);
console.log(bool1 != bool2);

         4. undefined和undefined

undefined和undefined
var und1;
var und2;
//运算,全部转数字
console.log(und1 + und2);
console.log(und1 - und2);
console.log(und1 * und2);
console.log(und1 / und2);
console.log(und1 % und2);
//比较,全部转数字
console.log(und1 > und2);
console.log(und1 < und2);
console.log(und1 >= und2);
console.log(und1 <= und2);
//判等 同种数据在判等的时候,不会发生任何转化,就看两边一样不一样,一样就是相等,不一样就不相等
console.log(und1 == und2);
console.log(und1 != und2);
console.log(NaN == NaN);

         5. null和null

 null和null
var nul1 = null;
var nul2 = null;
//运算,全部转数字
console.log(nul1 + nul2);
console.log(nul1 - nul2);
console.log(nul1 * nul2);
console.log(nul1 / nul2);//NaN 1/0  Inifinity   0/0 是NaN
console.log(nul1 % nul2);
//比较,全部转数字
console.log(nul1 > nul2);
console.log(nul1 < nul2);
console.log(nul1 >= nul2);
console.log(nul1 <= nul2);
//判等  同种数据在判等的时候,不会发生任何转化,就看两边一样不一样,一样就是相等,不一样就不相等
console.log(nul1 == nul2);
console.log(nul1 != nul2);

​​​​​​​5.3.2  不同数据类型之间的运算、比较和判等 

  1. 数字和其它数据类型

//1、数字和字符串
var num = 100;
var str = 'zhaoliying';
//运算
//不同数据运算的时候,只要碰到字符串,+法都是拼接字符串,其余的算法都是转数字
console.log(num + str);//拼接字符串
console.log(num - str);
console.log(num * str);
console.log(num / str);
console.log(num % str);
//比较  全部转数字
console.log(num > str);
console.log(num < str);
console.log(num >= str);
console.log(num <= str);
//判等  不同数据类型之间的判等,也是要转数字
console.log(num == str);
console.log(num != str);

//2、数字和布尔值  全部转数字
var bool = true;
console.log(num + bool);
console.log(num - bool);
console.log(num * bool);
console.log(num / bool);
console.log(num % bool);
//比较  全部转数字
console.log(bool > num);
console.log(num < bool);
console.log(num >= bool);
console.log(num <= bool);
//判等  不同数据类型之间的判等,也是要转数字
console.log(num == bool);
console.log(num != bool);

//3、数字和undefined   全部转数字
var und;
console.log(num + und);
console.log(num - und);
console.log(num * und);
console.log(num / und);
console.log(num % und);
//比较  全部转数字
console.log(num > und);
console.log(num < und);
console.log(num >= und);
console.log(num <= und);
//判等  不同数据类型之间的判等,也是要转数字
console.log(num == und);
console.log(num != und);

//4、数字和null  全部转数字
var nul = null;
console.log(num + nul);
console.log(num - nul);
console.log(num * nul);
console.log(num / nul);
console.log(num % nul);
//比较  全部转数字
console.log(num > nul);
console.log(num < nul);
console.log(num >= nul);
console.log(num <= nul);
//判等  不同数据类型之间的判等,也是要转数字
console.log(num == nul);
console.log(num != nul);

 2. 字符串和其它数据类型

//1)字符串和布尔
var str = 'yangmi';
var bool = false;
//运算
console.log(str + bool);//拼接字符串
console.log(str - bool);
console.log(str * bool);


console.log(str / bool);
console.log(str % bool);
//比较
console.log(str > bool);
console.log(str < bool);
console.log(str >= bool);
console.log(str <= bool);
//判等
console.log(str == bool);
console.log(str != bool);
// 2)字符串和undefined
var und;
//运算
console.log(str + und);//拼接字符串
console.log(str - und);
console.log(str * und);
console.log(str / und);
console.log(str % und);
//比较
console.log(str > und);
console.log(str < und);
console.log(str >= und);
console.log(str <= und);
//判等
console.log(str == und);
console.log(str != und);
//3)字符串和null


var nul = null;
//运算
console.log(str + nul);//拼接字符串 'yangminull'
console.log(str - nul);
console.log(str * nul);
console.log(str / nul);
console.log(str % nul);
//比较
console.log(str > nul);
console.log(str < nul);
console.log(str >= nul);
console.log(str <= nul);
//判等
console.log(str == nul);
console.log(str != nul);

 3. 布尔值和其它数据类型

var bool = true;
// 1)布尔和undefined
var und;
//运算
console.log(bool + und);
console.log(bool - und);
console.log(bool * und);
console.log(bool / und);
console.log(bool % und);
//比较
console.log(bool > und);
console.log(bool < und);
console.log(bool >= und);
console.log(bool <= und);
//判等
console.log(bool == und);
console.log(bool != und);

// 2)布尔和null
var nul = null;
//运算
console.log(bool + nul);
console.log(bool - nul);
console.log(bool * nul);
console.log(bool / nul);
console.log(bool % nul);
//比较
console.log(bool > nul);
console.log(bool < nul);
console.log(bool >= nul);
console.log(bool <= nul);
//判等
console.log(bool == nul);
console.log(bool != nul);

 4. undefined和null

var und;
var nul = null;
//运算
console.log(und + nul);
console.log(und - nul);
console.log(und * nul);
console.log(und / nul);
console.log(und % nul);
//比较
console.log(und > nul);
console.log(und < nul);
console.log(und >= nul);
console.log(und <= nul);
//判等
console.log(und == nul);//undefined和null判等的时候,不会转化,特殊情况,他俩相等
console.log(und != nul);

 ​​​​​​​5.4    类型转换总结

  1. 判等的时候:
    1. 先看两边是不是同种数据类型,如果是直接看是不是一样;如果不是那么两边都转数字。
    2. 当遇到null的时候,会有特殊情况发生:
      • 特殊情况:空串和null不相等。
      • 特殊情况:false和null不相等。
      • 特殊情况:0和null不相等。
      • 特殊情况:undefined 和 null 相等。
  2. 运算和比较情况下:
    1. 第一步:先看是不是 +
      • 如果是 +   看有没有字符串,如果有就是拼接字符串。
    2. 第二步:再看是不是比较
      • 如果是比较,看是不是两边都是字符串。
      • 如果两边全是字符串,比较的是字符串的Unicode码。
    3. 第三步:其余情况全部转数字
  3. NaN:
    1. 所有的东西和NaN进行算术运算都是NaN。   
    2. 所有的东西和NaN进行比较大小都是false。   
    3. 所有的东西和NaN都不相等(包括自己)。
  4. 全等和不全等:(不会出现类型转换)
    1. 他们在判等的时候,必须类型和值都相同。
    2. 如果有一个不一样,就不全等。

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王鹏飞的解忧屋

您的鼓励是我最大的创作来源

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值