Javascript 变量声明不正确?还是不稳定的模行为?

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

为什么在下面的代码中,modB总是等于1?特别是考虑到b%2没有

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;