为啥即使条件为假,这个“IF”也总是执行?

Posted

技术标签:

【中文标题】为啥即使条件为假,这个“IF”也总是执行?【英文标题】:Why does this "IF" always execute even the condition is false?为什么即使条件为假,这个“IF”也总是执行? 【发布时间】:2015-03-05 20:57:24 【问题描述】:

这是我的代码:

$('.btn-back').off('click').on('click', function (event) 
    var valid = carInfo.validate();
    if (valid) 
        event.preventDefault();
    
);

无论valid 是什么值,语句event.preventDefault() 总是执行。

当我将代码更改为

$('.btn-back').off('click').on('click', function (event) 
    var valid = carInfo.validate();
    if (valid) 
        event.preventDefault();
     else 

    
);

它按照应有的方式运行。也许这与自动分号插入 (ASI) 有关。

【问题讨论】:

那么validate函数是什么? boolean in an if statement 的可能重复项 validate() 返回什么?它可能正在研究“真实”的价值。 如果valid 不正确,它将不会执行,很有可能您的函数没有返回您期望的结果 您是否调试过代码或在 preventDefault() 上设置了断点?我不敢相信第一个代码块没有去 preventDefault() 而第二个代码块去它 【参考方案1】:

使用jQuery Validation插件方式:

carInfo.validate() 将返回 Validator object。

所以valid 变量总是true。使用docs中的valid方法:

$('.btn-back').off('click').on('click', function (event) 
    carInfo.validate();
    if (carInfo.valid()) 
        event.preventDefault();
    
);

【讨论】:

您需要拨打validate()吗?你不只需要if (carInfo.valid()) 吗? validate() 需要在使用此方法检查表单之前在表单上调用。来自docs :) 好的,只是确保 :-) As per OP's comment, "validate() is my own method",这个问题不是关于 jQuery Validate 插件的问题。 我添加了一个使用 jQuery validate 的建议 :)

以上是关于为啥即使条件为假,这个“IF”也总是执行?的主要内容,如果未能解决你的问题,请参考以下文章

define定义的函数在if条件为假也能继续执行吗?

JavaScript中的if条件判断语句

选择结构

当条件为假时执行 If 语句 True 块

即使第一个条件为假,是不是所有条件都在 if 语句中进行检查?

if选择结构