【问题标题】:No Semicolons after if/else statement in Function (Javascript)? What gives?函数 (Javascript) 中的 if/else 语句后没有分号?是什么赋予了?
【发布时间】:2016-04-13 00:42:01
【问题描述】:

我是 Javascript 和编码的新手,所以这可能是基本知识,但这个示例有效,尽管 if/else 语句的函数中没有分号,甚至没有花括号 {}。如果您在 if/else 中有多个条件,我认为它们都是必需的。两个有单一的条件,所以我知道他们不需要分号和花括号,但这两者都没有。 else 语句有 2 个条件,仍然没有分号或花括号,但代码仍然有效。感谢您提供任何见解。

另一个问题(已关闭但已回答 - Why is it that semicolons are not used after if/else statements?)有说明使用 ;或 {},但未解决函数中 if/else 的语法要求是否以某种方式发生变化。

http://www.javascriptkit.com/howto/show2.shtml

<script type="text/javascript">

//variable that will increment through the images
var step=0

function slideit(){
 //if browser does not support the image object, exit.
 if (!document.images)
  return document.getElementById('slide').src = slideimages[step].src
 if (step<2)
  step++
 else
  step=0
 //call function "slideit()" every 2.5 seconds
 setTimeout("slideit()",2500)
}

slideit()

</script>

【问题讨论】:

    标签: javascript if-statement


    【解决方案1】:

    多行需要大括号,之后不需要分号——函数中的语法没有什么不同:)

    https://www.codecademy.com/forum_questions/507f6dd09266b70200000d7e

    【讨论】:

      【解决方案2】:

      在 JavaScript 中,分号出现在 ifelse 之后。它们将属于 inside ifelse 块的语句之后,但它们在技术上是可选的。

      if 块以if 开头并包含一个语句块,该语句块可以是一个表达式或{ + 一个或多个表达式+ }else 块的工作方式相同。

      因此,所有这些都是等价的:

      if console.log("foo")
      
      if console.log("foo");
      
      if
          console.log("foo")
      
      if
          console.log;
      
      if { console.log("foo") }
      
      if { console.log("foo"); }
      
      if {
          console.log("foo")
      }
      
      if {
          console.log("foo");
      }
      

      else 块的工作方式相同。


      无论如何,您应该始终在 JavaScript 中包含分号(在适当的情况下)。它们是可选的,但我见过的每条 JavaScript 代码指南都会告诉你使用它们。

      【讨论】:

      • 感谢所有回复。还有1个歧义。 else 语句不是包含 2 个表达式,需要被视为一个块吗?
      • 任何没有大括号的ifelse 语句只会影响next 语句。如果您希望两个语句与else 一起使用,则需要包含大括号。分号与此无关。因此,您评论中问题的答案是肯定的:带有两个表达式的 else 语句被视为一个块,并且 必须 有大括号。
      • 再次感谢,但除非我弄错了,否则上面的 else 语句有 2 个表达式并且仍然有效(在 Chrome 中)。从技术上讲,这是其中之一吗?很好,但在实际实践中不要这样做,因为这是一种懒惰的事情?
      • 你错了。与else 块匹配的唯一语句是step=0
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-11
      • 2012-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多