js转换规则总结

目录

 

数据类型转换函数

Boolean()

Number()

String()

toString()

parseInt(str,n)

parseFloat(str)

比较运算

!!a if(a)

!a

=== 和 !==

a == b

+操作符

&& 和 || 转换规则


①.数据类型转换函数

Boolean()

  • 为false的特殊值有: false undefined null NaN 0 -0 ''  空 8种情况
  • 为true的特殊值:[] {} 'false'

Number()

  • 返回0的有: 空 ; 空字符串; 空数组; null;    false
  • 返回NaN的有: {}   undefined

String()

  • 和toString()类似 都可以将对象转为字符串,但toString()无法转换null undefined
  • String(null) == null String(undefined) == undefined

toString()

  • number array boolean functionj均覆盖了Object的toString()方法

  • number.toString(n) 将数字转为字符串    可转为指定进制的字符串 默认为十进制
  • boolean.toString() 返回指定布尔对象的字符串
  • arr.toString()返回一个字符串 每个元素用逗号隔开
  • Function.prototype.toString() |  fn.toString() 返回一个表示当前函数源代码的字符串
  • Object.prototype.toString()
    • 检测数据类型
Object.prototype.toString.call(new Date); // [object Date]
Object.prototype.toString.call(new String); // [object String]
Object.prototype.toString.call(Math); // [object Math]
Object.prototype.toString.call(undefined); // [object Undefined]
Object.prototype.toString.call(null); // [object Null]

parseInt(str,n)

  • 将字符串转为整数
  • 可以转为z指定进制的整数

parseFloat(str)

  • 将字符串转为浮点数

②.比较运算

!!a if(a)

相当于对数据进行了布尔转换Boolean(a)

!a

等同于对数据进行了布尔运算后取反

=== 和 !==

不进行转换直接比较,两者数据类型不同就不相等

a == b

对象与字符串进行比较:对象先转为字符串再进行对比

对象与Boolean值进行对比 对象转为字符串转为数值,Boolean转为数值  再进行对比

字符串与布尔值对比  两者均转为数值 再进行对比

null == undefined // true
NaN == NaN // false
[] == false// true 两边都转为number都为0
![] == false// true 左边取[]布尔值的反值 两边都为false
undefined == 0 //false
null == 0 //false

+操作符

  • 有字符串存在 其他的都转为字符串 调用String()
'1'+undefined //'1undefined'
'1'+null //'1null'
'1'+{} //'1[object Object]'
'1' + NaN //'1NaN'
'1' + [] //'1'
  • 数字+boolean/undefined/null  调用Number()
1+false == 1
1+true == 2
1+null == 1
1+undefined ---NaN
NaN != NaN
  • 数字+对象 对象转为字符串再进行拼接 调用String()
1+[] //'1'
1+[1,2,3]//"11,2,3" 
1+{} //'1[object Object]'
1+{a:1}//"1[object Object]"

&& 和 || 转换规则

当有一个值不是boolean值的情况下,逻辑与(&&)和逻辑非(||)不一定返回布尔值

  • && (逻辑与)   
  1. 若第一个操作数是null、undefined、NaN,则返回null、undefined、NaN

  1. 当第一个操作数是对象,或者两个操作数都是对象,则返回第二个操作数
  2. 若第二个操作数是对象,则在第一个操作数返回true的时候才返回第二个对象
  3. 如果第一个操作数求值结果为false,则不会对第二个操作数进行求值
  • || 逻辑或
  1. 若两个操作数都是null、undefined、NaN,则返回null、undefined、NaN
  2. 当第一个操作数是对象,或者两个操作数都是对象,则返回第一个操作数
  3. 若第一个操作数求值结果为false,则返回第二个操作数
  4. 若第一个操作数求值结果为true,则不会对第二个操作数进行求值
发布了32 篇原创文章 · 获赞 1 · 访问量 2915

猜你喜欢

转载自blog.csdn.net/yyk5928/article/details/102691454