Javascript Curly支持奇怪的行为

时间:2013-12-25 08:55:42

标签: javascript jquery

在下面的代码中,

    if (options.max) {
        if (i <= options.max) $(x).addClass("hey");
    }
    else {
        if (i >= options.min) $(x).addClass("no"); //<- this
    }

从上面删除每个大括号 使得第二个子句(标有<- this)不起作用。

    if (options.max)
        if (i <= options.max) $(x).addClass("hey");
    else
        if (i >= options.min) $(x).addClass("no"); //<- this

我认为JavaScript中的if语句的单个表达式可以在没有花括号的情况下使用。为什么会这样?

1 个答案:

答案 0 :(得分:5)

如果删除花括号,else适用于第二个if,即:

if (options.max)
    if (i <= options.max) $(x).addClass("hey");
    else
        if (i >= options.min) $(x).addClass("no"); //<- this

花括号需要确保else应用于整个语句,但第二组可以删除,即:

if (options.max) {
    if (i <= options.max) $(x).addClass("hey");
}
else
    if (i >= options.min) $(x).addClass("no"); //<- this

另一种方法是用&&运算符替换内部if语句,如下所示。

if (options.max)
    i <= options.max && $(x).addClass("hey");
else
    i >= options.min && $(x).addClass("no");

注意:这是有效的,因为如果&&之前的操作数等于false,表达式将“短路”。