美文网首页
js中的隐式转换

js中的隐式转换

作者: Veb | 来源:发表于2018-12-14 15:10 被阅读0次

正常的运算已经让人承受不住,为什么还有隐式转换?因为js属于弱类型语言,乍一看,包罗万象,其实是规则不强硬引起的放荡!

步入正题,其实js中隐式类型转换是有规律可循的,先来看一下各类型之间的运算情况:

1.对象与布尔

对象和布尔值进行比较时,对象先转换为字符串,然后再转换为数字,布尔值直接转换为数字

[] == true;  //false  []转换为字符串'',然后转换为数字0,true转换为数字1,所以为false

2. 对象和字符串

对象和字符串进行比较时,对象转换为字符串,然后两者进行比较

[1,2,3] == '1,2,3' // true  [1,2,3]转化为'1,2,3',然后和'1,2,3', 所以结果为true;

3. 对象和数字

对象和数字进行比较时,对象先转换为字符串,然后转换为数字,再和数字进行比较

[1] == 1;  // true  `对象先转换为字符串再转换为数字,二者再比较 [1] => '1' => 1 所以结果为true

4. 字符串和数字

字符串和数字进行比较时,字符串转换成数字,二者再比较

'1' == 1 // true

5. 字符串和布尔值

字符串和布尔值进行比较时,二者全部转换成数值再比较

'1' == true; // true 

6. 布尔值和数字

布尔值和数字进行比较时,布尔转换为数字,二者比较

true == 1 // true

7. 对象和字符串

对象和字符串进行比较时,对象转换为字符串,然后两者进行比较

[1,2,3] == '1,2,3' // true  [1,2,3]转化为'1,2,3',然后和'1,2,3', 所以结果为true;

其实规律很简单,大家可以记下边这个图(是时候展现我高超的绘画技巧了)


a.png

如图,任意两种类型比较时,如果不是同一个类型比较的话,则按如图方式进行相应类型转换,如对象和布尔比较的话,对象 => 字符串 => 数值 布尔值 => 数值。undefinednull是特殊情况,undefined==nulltrue

对于硬套公式的同学,送给你一个小礼物:

[] == false;
![] == false;
1+true;
1+false;
1+undefined
1+[];
1+null;
{}=[]

往日不可谏,来者犹可追!

相关文章

  • js中的类型转换

    在js中数据转换分为3种:隐式类型转换,强制类型转换,函数转换 1.隐式类型转换 (1):运算符转换 js中的值在...

  • 隐式转换的规则

    问题:隐式转换的规则是什么 说起JS的隐式转换规则,我们可以说下JS的基础数据类型 JS的七中类型 我们所熟知的J...

  • js 中的隐式转换

    js 的值类型 number string boolean null undefined object js 把 ...

  • JS中的隐式转换

    隐式转换 写在前面 在JS中有一个在学习过程和面试过程中很常见的问题就是JS的隐式转换,经常会有各种各样的“坑”等...

  • js中的隐式转换

    正常的运算已经让人承受不住,为什么还有隐式转换?因为js属于弱类型语言,乍一看,包罗万象,其实是规则不强硬引起的放...

  • JS里的数据类型转换

    在js中,数据类型转换分为显式数据类型转换和隐式数据类型转换。 1, 显式数据类型转换 a:转数字: 1)Numb...

  • scala-隐式机制及Akka

    隐式机制及Akka 隐式转换 隐式转换和隐式参数时Scala中两个非常强大的功能,利用隐式转换和隐式参数,可以提供...

  • 类型转换

    js的类型转换分成显示和隐式,显式转换常用类型转换函数进行转换,隐式最多用在条件判断,通常是把字符转为布尔型。类型...

  • JavaScript类型转换

    在js中数据类型转换一般分为两种,即强制类型转换和隐式类型转换(利用js弱变量类型转换)。 强制类型转换 即通过使...

  • JavaScript 01 (JS引入/变量/数据类型/类型转换

    JS的引入及调试,常量,字面量,变量,JS中的数据类型,JS的运算符,JS的运算符之隐式类型转换,强制类型转换,M...

网友评论

      本文标题:js中的隐式转换

      本文链接:https://www.haomeiwen.com/subject/wkjghqtx.html