为何不输出6个true? 财富值92

2016-09-26 07:28发布

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?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答

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

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

第 3 次:0 === false

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

第 2 次:null === false

result:true

你的逻辑写错了,看这几句话——

改成这样之后,会输出5个true和1个false,为什么还会有个false?因为NaN不等于其自身,像这样——

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

第 1 次:false === false