在看大侠们写的JS code中一直会发现有!!(condation)中,一向以来比较迷惑,不知道为什么这样写。因为双非(!!)之后,和以前所得到的值并没有区别,那我们为什么要多些一举,做这件事情呢?

谈到这个问题,我们首先应该从根上说起,因为JS是一门弱类型语言,所以在一些情况下,我们得到的值并不一定是boolean值,虽然在大数情况下,这是正确的,但是如果我们在一些严格的场景下我们有可能会得到错误的结果,如下例:

var isFoo=function(){

  return true&&"result";

}

console.log(isFoo());// 结果将是"result"

typeof isFoo()=="string";//不是我们期待的"boolean "

if(isFoo()){

  //code is here will be executed.

}

因为在JS中,解析器会把除false, 0, null, undefind,NaN以外的值都当成true,所以在当一些严格的场景中,需要使用!!来取得真正的bool值。 

最后让我们来看一下&&运算符是如何返回值的:&&将会返回第二个比较结果,在第一个结果是真的情况下,让我们来看下例:

True&&"foo";//"foo"

NaN&& "anything";  //NaN

0&&"anything";// 0

相关文章:

  • 2021-11-21
  • 2021-07-14
  • 2022-12-23
  • 2021-10-05
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-11-03
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-05-22
  • 2022-12-23
  • 2022-01-23
相关资源
相似解决方案