【问题标题】:JS shorthand for if elseif else 的 JS 简写
【发布时间】:2014-03-03 20:00:27
【问题描述】:

我正在努力提高我的编码技能,但我似乎无法弄清楚这一点。如何简写以下内容?

/* fade */
$('.toggle-ui').on({
    'click': function (e) {
        e.preventDefault();
        var divToFade = ['#logo', '#hide-interface'];

        $.each(divToFade, function(intValue, currentElement) {
            // check alpha state and switch
            var currOp = $(currentElement).css('opacity');

            if (currOp == 1) $(currentElement).css('opacity', 0.5);
            if (currOp == 0.5) $(currentElement).css('opacity', 1);
        });
    }

【问题讨论】:

  • 三元运算符是大多数编程语言中 if-else 的简写。
  • 我认为您正在寻找三元运算符,即(测试条件)?“成功结果”:“失败结果”;
  • @Sumant SMS 俚语糟透了 + 使用倒贴。

标签: javascript shorthand


【解决方案1】:

使用ternary operator

$(currentElement).css('opacity', currOp == 1 ? 0.5 : 1);

附带说明:我习惯于使用=== 而不是== 来避免意外类型强制导致的意外错误。要在这里使用它,我会通过+currOp 解析为一个数字:

$(currentElement).css('opacity', +currOp === 1 ? 0.5 : 1);

欲了解更多信息,请查看here

【讨论】:

  • @ShadowWizard 呃……我试过了。它没有用。删除了其中一个 eq 符号。它奏效了。
  • 同意! .css() 返回一个字符串,所以它需要 2 个== 将字符串评估为 int 并进行比较。
  • 如果您首先将currOp 解析为一个数字,即通过+,您应该能够使用三个=。所以应该是+currOp === 1== 会自动强制匹配类型,而=== 不会。
  • @obmon 这不是你改变的答案。如果需要,请评论并让作者修复,就像现在一样。
  • @SahilMahajanMj 改进别人的回答没有错,除非你关心他的易感性……顺便说一句,obmon 并没有冒犯。
【解决方案2】:

你也可以做简单的数学运算:

$(currentElement).css('opacity', 1.5 - currOp);

自从

1.5 - 1.0 = 0.5
1.5 - 0.5 = 1.0

【讨论】:

  • 我认为这会让我或其他任何人在将来阅读代码时感到困惑..
  • @obmon 值得一票,真的很聪明,+1。
  • @obmon 我也是。我倾向于避免这种写作,但这是一种可行的、更短的解决方案。
  • @obmon 此外,一个小评论会很有帮助:// currOp = 1 or .5.
猜你喜欢
  • 2014-09-22
  • 2014-11-04
  • 2013-11-19
  • 2013-08-18
  • 2011-06-02
  • 1970-01-01
  • 1970-01-01
  • 2012-04-09
  • 2013-01-05
相关资源
最近更新 更多