有一种理论,叫结构化程序设计(structed programming)。其中有这样一条原则:函数应该只有一个入口和一个出口。

例:

 1 function sample()
 2 {
 3      if(!document.getElementById)
 4      {
 5            return false;     
 6      }
 7 
 8       if(!document.getElementsByTagName)
 9      {
10            return false;     
11      }         
12 }

在上例中使用了多条return false语句,它们全都是这个函数的出口。根据结构化程序设计理论,应该把这些出口点减少到一个。

但在实际工作中,过分拘泥于这项原则往往会使代码变得非常难以阅读。如果为了避免留下多个出口点而去改写那些if语句的话,这个函数的核心代码就会被掩埋在一层又一层的花括号里,就像下面这样:

 1 function sample()
 2 {
 3      if(document.getElementById)
 4      {
 5            if(document.getElementByTagName)
 6            {
 7                //statements go here...
 8            }   
 9      }   
10 }

我个人认为,如果一个函数有多个出口,只要这些出口集中出现在函数的开头部分,就是可以接受的。

1 function sample()
2 {
3     if(!document.getElementById) return false;
4     if(!document.getElementsByTagName) return false;
5 }