简单的Q Javascript - 为什么返回false?

问题描述:

为什么这会返回false?我会认为for循环应该遇到前3个,满足if条件,然后返回true。谢谢你的帮助。简单的Q Javascript - 为什么返回false?

var array = [3, 3, 0, 0, 0, 3, 3]; 
 

 
    function some(array) { 
 
    for (var i = 0; i < array.length; i++) { 
 
     if (array[i] == true) { 
 
     return true; 
 
     } 
 
    } 
 
    return false; 
 
    }; 
 

 
    console.log(some(array)); 
 
    // false

+4

因为没有你的数组项目== true ...当比较一个数字与真实,它只是==如果数字是1 - 我认为真实是“被强制”为1比较 –

+0

嗯,没有什么是等于true。 3 == true; // false 0 == true; // false 等 – bullzito

+0

看到这个在行动,如果你'console.log(5 +真);'你得到6 –

,因为你比较true它返回false,没有你的数组中的值是true或1(JavaScript的认为是true)。如果你修改你的支票来检查价值的真实性,那么你会得到你期望的价值。

var array = [3, 3, 0, 0, 0, 3, 3]; 
 

 
    function some(array) { 
 
    for (var i = 0; i < array.length; i++) { 
 
     if (array[i]) { //Notice we just check for a truthy value 
 
     return true; 
 
     } 
 
    } 
 
    return false; 
 
    }; 
 

 
    console.log(some(array));

+0

注意,如果一个值为'1',那么在原始代码 –

+0

中评估为真好点,回答更新以包括您的笔记。 – rdubya

+0

*“数组中的值都不是”真“或”1“*任何转换为​​”1“的值都可以工作,例如, ''1'','[1]','{toString(){return'1';}}'。 –

条件(阵列[I] == TRUE)将检查是否[I]数组的值是 “真”(布尔型)或没有。

从数组变量中,没有数组[i]的值为“true”(布尔),则条件(数组[i] == true)始终为false。