if表达式的minifcation,给出意外的输出

时间:2016-02-23 10:55:03

标签: javascript

使用javascript minifier here,如果找到

if ($(this).val()) {
    idCat = $(this).val();
}

转换为此表达式

$(this).val()&&(idCat=$(this).val());

这种转变背后的理由是什么?

3 个答案:

答案 0 :(得分:1)

$(this).val()&&(idCat=$(this).val());

就像一个简单的AND条件

$(this).val()(idCat=$(this).val())是两个条件。

如果$(this).val()为0或布尔等效于false的内容,如Boolean ("")(即val()返回空字符串)或Boolean (null)则第一个条件将失败,第二个条件将不被执行。

答案 1 :(得分:1)

答案 2 :(得分:0)

如果第一部分(在&&之前)评估为false,则该代码的执行将停止,正如您通过测试以下代码所看到的那样......

(false)&&(console.log("statement is true"));

(true)&&(console.log("statement is true"));

它基本上是if语句的简写,我建议将来不要为了你而使用它,以及其他任何必须阅读你代码的人。虽然它不是世界上最复杂的东西,但它的可读性肯定比简单的if语句更容易被误读。