Javascript 变量声明不正确?还是不稳定的模行为?
为什么在下面的代码中,modB总是等于1?特别是考虑到b%2没有Javascript 变量声明不正确?还是不稳定的模行为?,javascript,modulo,Javascript,Modulo,为什么在下面的代码中,modB总是等于1?特别是考虑到b%2没有 var b = 0; var modB = 0; function buttonState() { b++; modB = b % 2; if (modB = 1) { theButtonState = true; } else { theButtonState = fal
var b = 0;
var modB = 0;
function buttonState() {
b++;
modB = b % 2;
if (modB = 1) {
theButtonState = true;
} else {
theButtonState = false;
}
console.log(b%2);
console.log(modB);
console.log(theButtonState);
}
更改以下代码行:
if (modB = 1)
到
然后再次尝试运行该程序
您也可以这样做(Felix解释):
代码的简洁性极大地提高了它的可读性。因为你正在将它设置为
1
:if(modB=1){
。另外,请不要编写只设置布尔值的if
语句。只需执行按钮state=modB==1;
。谢谢@FelixKling!我把那行改为code
if(modB<1){然后切换了对与错。我如何确定modB=1?使用==
(或者==
,如果你喜欢松散的比较,你不应该这样做)。我很好奇,为什么你认为=
在modB=b%2;
或按钮状态=true;
与if(modB=1)中会有不同的行为{
?大多数Linter都会对这个错误提出警告。我特别是在我的个人项目中使用,对于小的情况,你可以使用在线版本,比如:theButtonState=modB==1;
theButtonState=modB==1?真:假;
=>严重吗?@FelixKling我同意,这更好。我将添加它作为替代这就像写:x=1+2-1-1
而不是x=1
;)@codehitman
if (modB == 1)
theButtonState = modB == 1;