为什么这个JavaScript if语句总是返回true?

Sau*_*uce -1 javascript jquery if-statement

我试图在第一次单击div时执行代码块,然后在第二次单击时执行不同的块.我的警报显示变量在第一个块中被更改,但第一个代码块始终执行.

如果我手动更改变量,我可以执行第二个块.

var clickCount = 0;

        // code for first click 
        if ( clickCount === 0 ){
            $( '.link' ).click(function(){
                alert( 'first click. clickCount = ' + clickCount );
                clickCount = 1;                 
            });
        }

        // code for second click 
        if ( clickCount === 1 ){
            $( '.link' ).click(function(){
               alert( 'first click. clickCount = ' + clickCount ); // never executes
                // stuff
            });
        }
Run Code Online (Sandbox Code Playgroud)

dec*_*eze 5

你的代码说:

If the variable is 0
attach a click handler to the link which fires every time the link is clicked
Run Code Online (Sandbox Code Playgroud)

即使变量已更改,该单击处理程序仍保留在那里.该条件仅被评估一次,并且单击处理程序仅附加一次,但这是在每次单击链接时始终触发附加的单击处理程序所需的全部内容.

永远不会执行第二个块,除非您再次运行附加了单击处理程序的整个代码块.

您可能只想附加一次单击处理程序,并在该处理程序中检查其值clickCount并根据其值执行不同的操作.

var clickCount = 0;

$('.link').click(function () {
    alert('clickCount = ' + clickCount);

    if (clickCount === 0) {
        clickCount = 1;                 
    } else {
        // stuff
    }
});
Run Code Online (Sandbox Code Playgroud)