javascript中的return、return true、return false、continue區別


 

1、語法為:return 表達式;

2、w3c中的解釋:

  語句結束函數執行,返回調用函數,而且把表達式的值作為函數的結果

    也就是:當代碼執行到return語句時,函數返回一個結果就結束運行了,return后面的語句根本不會執行。

舉個栗子:

function myFun() {
    console.log("Hello");
    return "World";
    console.log("byebye")
}
myFun();

 上面代碼輸出“Hello”到控制台,返回“World”,但沒有輸出“byebye”,因為函數遇到return語句就退出了。 

 

3、return false:

  在大多數情況下,為事件處理函數返回false,可以防止默認的事件行為.例如,默認情況下點擊一個<a>元素,頁面會跳轉到該元素href屬性指定的頁。

  js中return false作用一般是用來取消默認動作 / 阻止提交表單 / 阻止繼續執行下面的代碼。

注意:return false 只在當前函數有效,不會影響其他外部函數的執行。
舉個栗子說明:
function a(){

   if(True)
       return false;
}
這是沒有任何問題的,如果我改成這種

function Test(){

   a();

   b();

   c();

}

  即使a函數返回return false 阻止提交了,但是不影響 b()以及 c()函數的執行。在Test()函數里調用a()函數,那面里面

return false 對於Test()函數來說,只是相當於返回值。而不能阻止Test()函數執行。



return false 返回錯誤的處理結果,終止處理。 就相當於終止符

4、return true:

  return true  返回正確的處理結果,就相當於執行符

5、return:把控制權返回給頁面。

6、關於阻止瀏覽器執行默認行為

  大家對事件冒泡都很熟悉了吧,我想表達的是大部分事件都是先在初始DOM上觸發,然后再通過DOM樹往上,在每一級父元素上觸發,事件不會在兄弟節點或是子節點上冒泡(當事件向下冒泡時,我們叫它事件捕捉(event capturing)),

    “return false”之所以被誤用的如此厲害,是因為它看起來像是完成了我們交給它的工作,瀏覽器不會再將我們重定向到href中的鏈接,表單也不會被繼續提交,但這么做到底有什么不對呢?

7、”return false“到底做了什么?

  當你每次調用”return false“的時候,它實際上做了3件事情:

  •event.preventDefault();
  •event.stopPropagation();
  •停止回調函數執行並立即返回。

  “等等”,你叫了起來!我只是想讓瀏覽器停止繼續執行默認行為而已,我不需要它去做另外2件事。

  這3件事中用來阻止瀏覽器繼續執行默認行為的只有preventDefault,除非你想要停止事件冒泡,否則使用return false會為你的代碼埋下很大的隱患,讓我們通過一個真實的例子來看看這樣的誤用會造成什么后果:

<div class="post">  
    <h2><a href="http://jb51.net">My Page</a></h2>  
    <div class="content">  
        Teaser text...  
     </div>  
</div>  
<div class="post">  
    <h2><a href="http://jb51.net">My Other Page</a></h2>  
    <div class="content">  
        Teaser text...  
    </div>  
</div>  

現在假設我們想要在用戶點擊文章標題時,將文章動態載入到div.contentd中:

jQuery(document).ready(function ($) {  
  $("div.post h2 a").click(function () {  
    var a  = $(this),  
    href = a.attr('href'), // Let jQuery normalize `href`,  
    content  = a.parent().next();  
    content.load(href + " #content");  
    return false; // "cancel" the default behavior of following the link  
  });  
});  

  這段代碼可以正常工作(至少目前是),但如果我們順着這個思路繼續,如果我想要在用戶點擊了一個div.post元素(或者任何一個它的子元素)時,給它加上一個active類,我就需要給div.post增加了一個click回調:

var posts = $("div.post");  
posts.click(function () {  
      posts.removeClass("active");  
      $(this).addClass("active");  
});  

  現在,如果我們點擊一個帖子的標題,這段代碼會工作嗎?答案是不會,因為我們在標題的click回調里使用了return false而不是我們應該使用的,”return false“等於event.preventDefault();加event.stopPropagation();,所以事件冒泡就被終止了,click事件不會被冒泡到div.post上,我們為它添加的事件回調當然也就不會被調用了。

那先來了解下什么是preventDefault():

preventDefault()

  大多數情況下,當你使用return false時,你其實真正需要的是e.preventDefault()。要使用e.preventDefault,你需要確保你傳遞了event參數到你的回掉函數中(在這個例子里,就是那個e):

$("a").click(function (e) {  
    // e == our event data  
    e.preventDefault();  
});  

  它會替我們完成所有工作,但不會阻止父節點繼續處理事件,要記住,你放在代碼中的限制越少,你的代碼就越靈活,也就越易於維護。

stopPropagation()

定義:不再派發事件。

終止事件在傳播過程的捕獲、目標處理或起泡階段進一步傳播。調用該方法后,該節點上處理該事件的處理程序將被調用,事件不再被分派到其他節點。

  該方法將停止事件的傳播,阻止它被分派到其他 Document 節點。注意,雖然該方法不能阻止同一個 Document 節點上的其他事件句柄被調用,但是它可以阻止把事件分派到其他節點。

8、什么時候用 return false?

  只有當你同時需要preventDefault和stopPropagation,並且你的代碼可以接受直到你的回調執行完成才停止執行瀏覽器的默認行為,那你就可以使用”return false“。

 

return、continue、break 、continue 的區別 

return : 

      (1) return 從當前的方法中退出,返回到該調用的方法的語句處,繼續執行。
      (2) return 返回一個值給調用該方法的語句,返回值的數據類型必須與方法的聲明中的返回值的類型一致。
      (3) return后面也可以不帶參數,不帶參數就是返回空,其實主要目的就是用於想中斷函數執行,返回調用函數處。

continue : 

  終止本次循環的執行,即跳過當前這次循環中continue語句后尚未執行的語句,接着進行下一次循環條件的判斷

   它不是退出一個循環,而是開始循環的一次新迭代。

     continue語句只能用在while語句、do/while語句、for語句、或者for/in語句的循環體內,在其它地方使用都會引起錯誤!

舉個栗子:

 

for(var i=1;i<=10;i++) { 
    if(i==8) { 
        continue; 
    } 
    document.write(i); 
} 

//當i=8的時候,直接跳出本次for循環。下次繼續執行。

//輸出結果:1234567910

 

 

break :

    (1)break在循環體內,強行結束循環的執行,也就是結束整個循環過程,不在判斷執行循環的條件是否成立,直接轉向循環語句下面的語句。
    (2)當break出現在循環體中的switch語句體內時,其作用只是跳出該switch語句體。
 
舉個栗子:
 1 for(var i=1;i<=10;i++) { 
 2     if(i==8) { 
 3         break; 
 4     } 
 5     document.write(i); 
 6 } 
 7 
 8 //當i=8的時候,直接退出for這個循環。這個循環將不再被執行!
 9 //輸出結果:1234567

 

 

 


部分資料來源於網絡,僅供學習參考,侵權刪

資料來源:http://blog.csdn.net/holandstone/article/details/7613261

http://www.jb51.net/article/74959.htm

http://www.jb51.net/article/42711.htm

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM