条件为false但if语句中的代码在JavaScript中执行

时间:2016-11-08 17:39:34

标签: javascript conditional-statements

我有这个代码:

        setInterval (function(){
            var r_width=$(document).width();
            if(r_width>650){
                alert(r_width);
                $("#game, #gms").hover(function() {
                    $("#gms").stop(true, true).fadeIn(500);
                }, function() {
                    $("#gms").stop(true, true).delay(10).fadeOut(400);
                });
            }
        }, 1000);

条件成立:
当文档宽度大于650时,将显示警报并执行代码.hover。
条件为假:
但是,当文档宽度小于650时,不会显示警报,但会执行代码。

为什么当条件为假时代码被执行?

2 个答案:

答案 0 :(得分:2)

代码没有被执行,但你已经在一个区间内放置了一个事件处理程序,并且当函数再次触发时,事件处理程序不会被删除,它会停留,你只需每秒添加更多的事件处理程序。

添加事件处理程序一次,并在事件处理程序

中执行检查
$("#game, #gms").hover(function() {
    if ( $(document).width() > 650 )
        $("#gms").stop(true, true).fadeIn(500);
}, function() {
    if ( $(document).width() > 650 )
        $("#gms").stop(true, true).delay(10).fadeOut(400);
});

答案 1 :(得分:0)

如果条件r_width>650至少评估一次为真(当代码在setInterval中每隔一秒执行一次时)hover监听器附加到元素选择器#game#gms

然后每次触发悬停事件时,尽管值r_width

,仍会执行回调代码