【问题标题】:issue in if else statement在 if else 语句中发出
【发布时间】:2021-07-08 05:39:19
【问题描述】:

我需要帮助来解决我遇到的这个问题。我在 stackoverflow 中遇到了几个问题,但我仍然不明白。

这是我写的代码:

var myFeedback = ""
      if (this.userFriendlinessRating <= 4.0 && this.userFriendlinessRating >= 3.5){
        myFeedback = 'VERY SATISFIED' 
        return myFeedback;
      } else if (this.userFriendlinessRating <= 3.5 && this.userFriendlinessRating >= 2.5){
        myFeedback = 'SATISFIED' 
        return myFeedback;
      } else if (this.userFriendlinessRating <=2.5 && this.userFriendlinessRating >=1.5){
        myFeedback = 'NOT SATISFIED' 
        return myFeedback;
      } else {
        myFeedback = 'VERY NOT SATISFIED' 
        return myFeedback;
      }
      console.log(myFeedback)

这是我得到的错误:

【问题讨论】:

  • 每个if部分和最后一个else都包含return,所以控件不能越过if-elseif-elseif-else结构。因此最后的console.Log 行无法访问。
  • 这是什么语言?
  • 我在 Angular 框架的 typescript 组件中使用 javascript
  • 我在您的问题中添加了typescript 标签。

标签: typescript if-statement unreachable-code


【解决方案1】:

每个if 部分和最后一个else 都包含return,因此控件不能通过if-elseif-elseif-else 结构。因此最后的console.Log 行无法访问。

删除所有内部return 语句并在末尾添加一个以获得您想要的:

var myFeedback = ""
      if (this.userFriendlinessRating <= 4.0 && this.userFriendlinessRating >= 3.5){
        myFeedback = 'VERY SATISFIED' 
      } else if (this.userFriendlinessRating <= 3.5 && this.userFriendlinessRating >= 2.5){
        myFeedback = 'SATISFIED' 
      } else if (this.userFriendlinessRating <=2.5 && this.userFriendlinessRating >=1.5){
        myFeedback = 'NOT SATISFIED' 
      } else {
        myFeedback = 'VERY NOT SATISFIED' 
      }
      console.log(myFeedback)
      return myFeedback;

【讨论】:

  • 谢谢它的工作。如果我把 return 放在最后 else 会导致问题吗?
  • 我不知道你会有什么问题。这取决于您的程序所需的行为。您几乎可以将return 放在例程中的任何位置,但您需要了解您想要实现的目标以及代码更改如何服务于您的目标。随机修改通常不会产生好的程序,而是一团糟。 :) 这就像把一袋乐高积木倒在地板上,希望你能得到一座有五塔三门的城堡。
  • @YOS 忘记在上面的评论回复中ping,所以在这里ping。
【解决方案2】:

如果你想访问控制台日志,你应该像这样重组,这样最后一行就可以到达了。

var myFeedback = ""
if (this.userFriendlinessRating <= 4.0 && this.userFriendlinessRating >= 3.5){
  myFeedback = 'VERY SATISFIED' 
} else if (this.userFriendlinessRating <= 3.5 && this.userFriendlinessRating >= 2.5){
  myFeedback = 'SATISFIED' 
} else if (this.userFriendlinessRating <=2.5 && this.userFriendlinessRating >=1.5){
  myFeedback = 'NOT SATISFIED' 
} else {
  myFeedback = 'VERY NOT SATISFIED' 
}
console.log(myFeedback)
return myFeedback;

【讨论】:

  • 就在你们评论的时候。我删除了退货并将其放在最后一个else中,它可以工作。我看到你们把 return 放在 if 语句之外。如果我将退货放在最后一个 else 会引起问题吗?
  • 如果你把它放在最后一个 else 中,它会返回并且只在那个实例中不做 console.log。所以这取决于你什么时候想运行控制台日志。
【解决方案3】:

您必须为 myFeedback 变量的决定传递一个返回值,并且该返回值应放在最后。 请参阅下面的示例大纲

      var obj = ""

      if (cond){
        obj = 'VERY SATISFIED' 
      } else if (cond){
        obj = 'SATISFIED' 
      } else if (cond){
        obj = 'NOT SATISFIED' 
      } else {
        obj = 'VERY NOT SATISFIED' 
      }
      console.log(obj)
      return obj;

【讨论】:

  • 您的 sn-p 不起作用。它没有定义它使用的符号cond,即使它定义了,逻辑显然是错误的——两个内部if 块是无法访问的。此外,如果你不在一个街区,你可能不会return,例如一个函数。要么给出一个完整的、工作的 sn-p,要么不要从伪代码或代码草图中制作一个不可用的“可运行的 sn-p”。
  • @CiaPan fyi 我假设 cond 是某种条件。理解逻辑重要的是理解结构而不是直接跳来解决它。我附上的代码 sn-p 解释了如何处理条件的工作流程
  • 如果你只是为了解释算法结构,即使是伪代码的简化代码也完全可以。什么不好(恕我直言)暗示它是一个功能齐全、可运行的代码,就像你所做的那样。只需单击 [Run code sn-p] 按钮即可查看结果。
  • 好的,你的意思是@CiaPan。对不起,我的错误我不应该使用那个剪辑,我对 Stack 很陌生,你的建设性论点真的帮助了我,下次会记住这一点。谢谢你
  • 我稍微修改了您的条目以避免提示代码完整。请参阅revisions list 了解我的更改。如果您不喜欢我所做的,请随时回滚。
猜你喜欢
  • 2019-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多