我正在处理一个赋值,在变量与数组中的值匹配后,布尔值必须切换。变量必须使用for
循环与数组中的值匹配。但是,在引入for
循环之前,我可以切换布尔值。但在我介绍了for
循环之后,布尔值被固定在其原始值false
。
有人能解释一下为什么会发生这种事吗?
我也可以要求,我不是在寻找"如何做到这一点",而是解释为什么会发生这种情况——所以如果你不向我推荐实现这一点的"另一种更好的方法",我将不胜感激——我只是想理解这个概念,因为我是一个初学者。
在for
循环(正确更改布尔值(之前,我使用的代码是:
var c = 3;
var w = [];
var m = false;
w.push(3,4);
if (c === w[0]){
m = true;
}
alert (m);
然而,在我添加了for
循环计数器并将if
条件从c===w[0]
更改为c===w[i]
之后,我只使用以下代码得到"false"警报:
var c = 3;
var w = [];
var m = false;
w.push(3,4);
for (i=0; i<2 && c!==w[i]; i++){
if (c === w[i]){
m = true;
}
}
alert (m);
如果您只希望布尔变量必须切换为只满足一个条件,则可以使用some((方法,而不是使用for循环。使用此方法,循环将不会遍历所有对象,并且在满足条件后将停止。示例如下:-
var arr = [3,4,5];
var m = 4;
var bool = false;
array.some(function(item) {
if (m === item){
bool = true;
}
});
alert(bool);
因此,一旦你从数组中得到匹配的对象,这基本上会给你真正的警报。
for
中的条件在第一次迭代之前也会被检查,因此if
不会被激发。检查代码如下:
var c=3;
var w=[];
w.push(3,4);
var m=false;
for (var i=0;i<2 && c!==w[i];i++){
console.log('In loop')
if (c===w[i]){
m=true;
}
}