【问题标题】:Shorthand if statement always returns 'false' instead of value assigned简写 if 语句总是返回 'false' 而不是赋值
【发布时间】:2016-10-01 14:56:35
【问题描述】:

我正在尝试使用 Javascript 中的简写 if 语句来确定我的参数之一是否为负数,如果是,我想将其更改为特定值。这是我的代码:

var findDigit = function(num, nth){
nth = nth < 0 ? nth === -1: nth;
}

我想问的是nth是否小于0,然后将nth改为-1,如果小于0,什么都不做,或者保持nth 就是这样。当我控制台记录第 n 个参数时,我得到“假”。

我在其他时候也遇到过这个问题。所以我想我要问的是,你如何写一个没有“else”部分的速记if语句?如果 if 语句为 true,我希望它运行一段代码,但如果它为 false,我不希望它执行任何操作。谢谢!

【问题讨论】:

  • 您的意思可能只是-1 而不是nth === -1
  • 你在if部分使用了相等运算符,你只需要返回-1 var findDigit = function(num, nth){ nth = nth &lt; 0 ? -1: nth; }
  • 你有一个赋值语句。 ? 的结果分配给nth。如果nth 是否定的,你说? 的结果是nth === -1,它可能是真或假,但绝不是-1? 不是 if 语句的简写。这是一个表达式。
  • 检查你没有在你的函数中使用num参数...它应该被删除

标签: javascript if-statement arguments conditional-operator


【解决方案1】:

由于您的 if 语句:nth &lt; 0,以下代码被执行:nth === -1 这是一个检查(包括类型),如果 nth 正好是 -1。只需省略这部分并打印

var findDigit = function(num, nth){
  nth = nth < 0 ? -1: nth;
}

【讨论】:

  • 啊,有道理,我的错。非常感谢!
【解决方案2】:

除了放置值之外,您无需执行任何其他操作:

nth = nth < 0 ? -1: nth;

【讨论】:

    【解决方案3】:

    我对javascript不太了解,但我觉得您使用的是比较运算符===,这就是它返回布尔值(false)的原因。

    尝试使用 = 赋值,即: nth = nth

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-11
      • 2020-08-09
      • 1970-01-01
      • 1970-01-01
      • 2015-08-11
      • 2020-08-20
      • 2012-05-11
      • 2016-01-04
      相关资源
      最近更新 更多