2012-08-02 40 views
0

我想了解链接以及如何通过阅读OPC自己做到这一点。我仍然很困难。在学习这些时,我遇到了一些错误处理,这引起了我的眉毛。从缩排看来,第4行不是从第2行开始的if语句的一部分。我是否有权假定2行if语句不需要大括号,并且解释器假定当存在缺乏花括号,只有直接处理if语句的行是if语句的一部分;因此,第四行是不是在以下块中的if语句的一部分:第2行的if语句是否在第4行?

set: function (mystr, func) { 
     if (!this[mystr]) 
      throw new Error("unknown hook " + mystr); 
     this[mystr] = func; 
    }, 
+1

这不是你的问题的最好例子 - 因为错误的抛出意味着即使它在* if区块内,它也不会被执行。 (事实并非如此)。 – 2012-08-02 08:07:01

+0

@AndrzejDoyle用一块石头杀死两只鸟。感谢您的评论。 – 2012-08-02 08:22:08

回答

3

这通常不是线声明随后一个被认为与它所属的if语句。

+0

谢谢。所以基本上所有的东西都在下一个分号之前。 – 2012-08-02 08:22:47

+0

@ Wolfpack'08。分号在JS中是可选的。没有大括号,这是下一个** ON * STATEMENT **。 – 2012-08-02 10:32:33

+0

@Flem你知道我在哪里可以读到关于'ON * STATEMENT'的信息吗? – 2012-08-02 14:05:25

2

只有在块中有多条语句时才需要大括号。如果您不使用大括号,则下一个语句(单个)将位于该块内,以下语句将位于该块之外。

if (something) 
    StatementIfTrue(); 
StatementEitherWay(); 

if (something) 
{ 
    StatementIfTrue1(); 
    StatementIfTrue2(); 
} 
StatementEitherWay(); 

if (something) StatementIfTrue(); StatementEitherWay(); 
+0

感谢您的回答。疯狂的尊重这个例子。 – 2012-08-02 08:26:28

1

是的,第4行不在if块中。

没有大括号,只有在if之后的下一个语句将在if块中。

相关问题