js中!!()的作用

Source

js中!!()的作用

总体来说,就是 强制转换为布尔类型(boolean)

JavaScript是弱类型语言,他其中有数据类型的转化,有显示类型转换和隐式类型转换.

隐式类型转换

定义: 不需要程序员定义,JavaScript会自动将某一个类型的数据转换成另一个类型的数据。
JavaScript隐式类型转换的规则:将类型转换到环境中应该使用的类型。

其他类型转换为布尔类型为假的情况:

  • 0
  • 0.0
  • " "
  • NAN
  • false
  • undefined

可以隐式类型转换的情况:

  1. 数字类型:在字符串环境下可以隐式转换为“数字”,在布尔环境下,可以隐式转换为true(非0数字,0为false)
  2. 非空字符串:在数字环境下,可以隐式转换为字符串中的数字或NaN;在布尔环境下,可以隐式转换为true。
  3. 空字符串:在数字环境下可以隐式转换为0;在布尔环境下可以隐式转换为false;
  4. 字符串”true“:在数字环境下可以隐式转换位1;布尔为true
  5. 字符串“false”:数字环境为0,布尔为false
  6. null:在字符串环境下,转换为“null”;数字环境下,转换为0,布尔环境下,转为false
  7. NaN:在字符串环境下可以隐式转换为“NaN”;布尔环境下,转换为false
  8. undefined:字符串环境下,转换为“undefined”,数字环境下,转为NaN,布尔下,转为false
  9. true:字符串转为“true”,数字环境下转为1
  10. false:字符串转为“false”,数字环境下转为0
显式类型转换
  1. Number()

如果是布尔值,true和false将分别转换为1和0
如果是数字值,只是简单的传入和返回
如果是null,返回0
如果undefined,返回NaN

  1. parseInt()

忽略字符串前面的空格,直到找到第一个非空格字符
如果第一个字符不是数字或者是负号,返回NaN
空字符串,返回NaN
如果第一个字符是数字,会继续解析第二个字符直到解析完所有后续字符或遇到了一个非数字字符
如果字符串以0x开头且后面跟数字字符,就会将其转为16进制数,同样,八进制也一样。

  1. parseFloat()

第一个小数点是有效的,第二个小数点无效
始终忽略前面的0,不分进制数
十六进制会被转换成0
空字符串转换为NaN

  1. String()