【问题标题】:Javascript shortened if statement add else statementJavascript缩短了if语句添加else语句
【发布时间】:2013-11-07 10:08:21
【问题描述】:

我使用的是预编译代码,我必须为以下 if 语句添加 else 语句:

if(F && F[0]) for(var i=0; i<F.length; i++) readImage( F[i], '1417', '1417');

我通常使用这种类型的语句快捷方式:

if(dog == 'billy') ? true : false ;

但不知道第一个。

【问题讨论】:

  • 这不是“缩短的”if 声明,它只是一个 if 声明。

标签: javascript if-statement shortcut


【解决方案1】:

您可以在if/for/while 等语句中放置一行代码,而无需使用括号。以下代码不会执行bar(),但会执行rab()

var foo = false;
if (foo) 
    bar();
rab();

您的代码缩进如下所示:

if(F && F[0]) 
    for(var i=0; i<F.length; i++) 
        readImage( F[i], '1417', '1417');

与此基本相同:

if(F && F[0]) {
    for(var i=0; i<F.length; i++) {
        readImage( F[i], '1417', '1417');
    }
}

所以你可以把它改写成:

if(F && F[0]) {
    for(var i=0; i<F.length; i++) {
        readImage( F[i], '1417', '1417');
    }
} else {
    //Something else
}

【讨论】:

    【解决方案2】:

    将内容混入一行通常会增加混乱。您的第一个代码块是这样的:

    if(F && F[0]) 
        for(var i=0; i<F.length; i++) 
            readImage( F[i], '1417', '1417');
    

    所以你需要做的就是添加else:

    if(F && F[0]) 
        for(var i=0; i<F.length; i++) 
            readImage( F[i], '1417', '1417');
    else
       //something
    

    我个人觉得使用括号更容易,它让一切都更容易理解:

    if(F && F[0]) {
        for(var i=0; i<F.length; i++) {
            readImage( F[i], '1417', '1417');
        }
    }
    else {
       //something
    }
    

    关于您通常的说法,您混淆了两种不同的技术,标准 if:

    if(dog == 'billy') 
        //true 
    else 
        //false
    

    和条件运算符(通常称为三元),不需要if 部分,通常用于条件赋值:

    var isTheDogCalledBilly = dog == 'billy' ? true : false;
    

    【讨论】:

    • 你忘了更容易维护。
    • JS 是否足够聪明,知道else 属于if 而不是for编辑:显然如此。 if (false) for (var i = 0; i &lt; 10; i++) console.log(i); else console.log('foo'); 输出 foo 但看起来非常混乱。
    • 当然,一旦你开始嵌套它就会变得非常有趣ifs:if (number &lt; 10) if (number &lt;= 5) console.log('lt5'); else console.log('gt5'); else console.log('gte10')
    猜你喜欢
    • 2019-05-06
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 2021-09-11
    • 2016-06-21
    • 2011-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多