【问题标题】:Javascript shorthand an if statement [duplicate]Javascript简写if语句[重复]
【发布时间】:2013-08-08 21:10:31
【问题描述】:

以下内容的简写形式是什么?

if (windowwidth >= 960){
        widthofwindow = 1;
    } else {
        widthofwindow = 0;
    }

【问题讨论】:

标签: javascript


【解决方案1】:

如果你喜欢,你可以使用一些技巧(除了三元运算符)

widthofwindow = Number(windowwidth >= 960);

当使用Number(value) 表达式时,将执行类型转换(值=> 数字),如果windowwidth >= 960true,则在这种情况下转换为1,否则转换为0。请注意,没有使用 new 关键字,因为您不想创建对象 - 您只想将一种类型转换为另一种类型。

更多信息可以在这里找到:Number (MDN)

widthofwindow = (windowwidth >= 960) * 1;

这种情况(以及+(value))是另一种在 JS 中进行类型转换的示例。当您乘以(或使用一元 + 符号)时,您的布尔值也会变为具有相应值的 Number

您可以在这里找到一些信息:JavaScript Garden

【讨论】:

  • 或者只是widthofwindow = +(windowwidth >= 960)
  • @FelixKling:忘了这个了:)
  • 哦,即使这对我们来说很明显,也许您应该快速解释一下为什么/如何工作。但你还是得到了我的 +1 ;)
  • 需要提供一个快速解释当然是为什么在实际代码中永远不应该这样做——即使它的逻​​辑很好知道。
  • 它之所以有效是因为Number(true) 返回1Number(false) 返回0,如ToNumber 规范中所定义。见ecma-international.org/ecma-262/5.1/#sec-9.3
【解决方案2】:
result = (condition) ? 'something' : 'somethingelse';

http://javascript.about.com/od/byexample/a/ternary-example.htm

【讨论】:

    【解决方案3】:
    windowwidth = windowwidth >= 960 ? 1 : 0;
    

    【讨论】:

      【解决方案4】:

      你可以使用三元运算符:

      widthofwindow = windowwidth >= 960 ? 1 : 0
      

      你可以这样理解

      condition ? value_if_true : value_if_false
      

      【讨论】:

      • 更准确地说:条件运算符(JS中唯一的三元运算符)。
      • +1 - 抢先执行widthofwindow = Number(windowwidth >= 960); 的建议(ETA:12 秒太迟了)。可能希望将分配目标的名称固定为widthofwindow
      • 三元表达式是要走的路,但我通常尝试将条件包装在括号中(首选),或者在条件中删除空格,否则很容易误读语句。 (另外,widthofwindow =
      • 你是对的 - 我编辑了我的答案以将值分配给 widthofwindow
      猜你喜欢
      • 2012-04-09
      • 1970-01-01
      • 2015-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-18
      • 2013-08-18
      • 1970-01-01
      相关资源
      最近更新 更多