一、語法爲:return 表達式;javascript
二、w3c中的解釋:java
語句結束函數執行,返回調用函數,並且把表達式的值做爲函數的結果
也就是:當代碼執行到return語句時,函數返回一個結果就結束運行了,return後面的語句根本不會執行。瀏覽器
舉個栗子:網絡
function myFun() { console.log("Hello"); return "World"; console.log("byebye") } myFun();
上面代碼輸出「Hello」到控制檯,返回「World」,但沒有輸出「byebye」,由於函數遇到return語句就退出了。 函數
三、return false:post
在大多數狀況下,爲事件處理函數返回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()函數,那面裏面this
return false 對於Test()函數來講,只是至關於返回值。而不能阻止Test()函數執行。spa
return false 返回錯誤的處理結果,終止處理。 就至關於終止符,
四、return true:.net
return true 返回正確的處理結果,就至關於執行符。
五、return:把控制權返回給頁面。
六、關於阻止瀏覽器執行默認行爲
你們對事件冒泡都很熟悉了吧,我想表達的是大部分事件都是先在初始DOM上觸發,而後再經過DOM樹往上,在每一級父元素上觸發,事件不會在兄弟節點或是子節點上冒泡(當事件向下冒泡時,咱們叫它事件捕捉(event capturing)),
「return false」之因此被誤用的如此厲害,是由於它看起來像是完成了咱們交給它的工做,瀏覽器不會再將咱們重定向到href中的連接,表單也不會被繼續提交,但這麼作到底有什麼不對呢?
七、」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 節點上的其餘事件句柄被調用,可是它能夠阻止把事件分派到其餘節點。
八、何時用 return false?
只有當你同時須要preventDefault和stopPropagation,而且你的代碼能夠接受直到你的回調執行完成才中止執行瀏覽器的默認行爲,那你就可使用」return false「。
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 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