javascript - 为何不输出6个true?
天蓬老师
天蓬老师 2017-04-11 12:59:56
0
5
299
function bouncer(arr) {
  rule=[false,null,0,"",undefined,NaN];
  changed=[];
  for (i=0;i<arr.length;i++){
    dis=false;
    for(j=0;j<6;j++){
      if(arr[i]===rule[j]){dis=true;}
      break;
    }
    console.log(dis);
  }
}

bouncer([false, null, 0, NaN, undefined, ""]);

为何不输出6个true?


如何达到我的意图,输出6个true?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

Antworte allen(5)
迷茫
function bouncer(arr) {
  rule=[false,null,0,"",undefined,NaN];
  changed=[];
  for (i=0;i<arr.length;i++){
    dis=false;
    for(j=0;j<6;j++){
      if(arr[i]===rule[j]){
          dis=true;
          break;
      }
    }
    console.log(dis);
  }
}

仔细看你代码中break的位置。

Peter_Zhu

里面那个循环执行一次就break了当然不是6个true了。

伊谢尔伦

你也不看看你的break在那里。

巴扎黑
  1. 你的逻辑写错了,看这几句话——

    for(j=0;j<6;j++){
      if(arr[i]===rule[j]){dis=true;}
      break;
    }

    这会是什么情况?j循环第一次之后,直接运行break,跳出了当前循环,然后就会直接输出false。那么,当然就只有rule[0]匹配到了,也就是只有一个true。那么,这里的代码应该改成这样,匹配到了之后再跳出——

    for(j=0;j<6;j++){
      if(arr[i] === rule[j]){
    dis = true;
    break;
      }
    }
  2. 改成这样之后,会输出5个true和1个false,为什么还会有个false?因为NaN不等于其自身,像这样——

    NaN === NaN
    //false
伊谢尔伦

第 1 次:false === false

result:true

第 2 次:null === false

result:false

第 3 次:0 === false

result:false
...
第 6 次:"" === false

result:false

因为 break 导致每次内循环只循环了 1 次,每次循环都用 false 来比较,这就是为什么会输出 1 次 true,5 次 false 的原因。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!