JavaScript中return的用法

大家好,我是IT修真院北京分院第23期學(xué)員。今天主要整理一下return的用法。

JavaScript return 語(yǔ)句,表示從被調(diào)函數(shù)返回到主調(diào)函數(shù)繼續(xù)執(zhí)行,返回時(shí)可附帶一個(gè)返回值,由return后面的參數(shù)指定。return通常是必要的,因?yàn)楹瘮?shù)調(diào)用的時(shí)候計(jì)算結(jié)果通常是通過(guò)返回值帶出的。如果函數(shù)執(zhí)行不需要返回計(jì)算結(jié)果,也經(jīng)常需要返回一個(gè)狀態(tài)碼來(lái)表示函數(shù)執(zhí)行的順利與否(-1和0就是最常用的狀態(tài)碼),主調(diào)函數(shù)可以通過(guò)返回值判斷被調(diào)函數(shù)的執(zhí)行情況。

return返回值的作用就是把固定不變的,常用的代碼封裝起來(lái)寫在類里,每次用到的時(shí)候就調(diào)用就行了。

先來(lái)簡(jiǎn)單總結(jié)一下renturn的實(shí)際使用。

1. return 語(yǔ)句會(huì)終止函數(shù)的執(zhí)行并返回函數(shù)的值。

寫一個(gè)button觸發(fā)onclick事件

function demo1() {

return1;

document.write(' <div class="print-result">'+"demo1"+'</div>');

}


在return的時(shí)候,函數(shù)值等于1,后續(xù)代碼不會(huì)再執(zhí)行,不會(huì)有后續(xù)輸出。

function demo2() {

function a(b,c) {

return b+c;

document.write('<div class= "print-result">'+ (b+c) +'</div>');

}

var abc=a(5,80);

alert(abc);

}

調(diào)用abc這個(gè)變量的時(shí)候,它的值會(huì)是85;如果想直接輸出結(jié)果,不要返回值那就刪除掉return b+c,這樣abc是沒(méi)有值的,但是網(wǎng)頁(yè)會(huì)輸出85。

也可以說(shuō)默認(rèn)函數(shù)是沒(méi)有返回值的。通常函數(shù)經(jīng)過(guò)一系列處理后需要給外部返回一個(gè)值或者對(duì)象,如

function demo3() {

function sum(a,b){

returna+b

}

alert(sum(1,2));

}

這個(gè)時(shí)候alert顯示的值是3,而如果去掉return,則會(huì)返回undefined。

2. 基于函數(shù)返回值的應(yīng)用

return在終止函數(shù)運(yùn)行時(shí)的應(yīng)用:為事件處理函數(shù)返回return:false; ,作用在于阻止默認(rèn)事件行為和取消默認(rèn)動(dòng)作,如

<a?href ="一個(gè)網(wǎng)址"? onclick= “return demo4()”>demo4</a>

為它添加一個(gè)return值

function demo4() {return false;}

這樣點(diǎn)擊鏈接就不會(huì)跳轉(zhuǎn)

以上就是return的常見(jiàn)用法,此時(shí)有一個(gè)比較常見(jiàn)的問(wèn)題,即:若在for循環(huán)中使用了return,還會(huì)執(zhí)行下一次循環(huán)嗎?

function demo5() {

for(var i=1; ;i++) {

console.log(i+"A");

return;

console.log(i+"B");}

console.log(i+"C");}

由于出現(xiàn)return,函數(shù)直接終止運(yùn)行并且返回當(dāng)前值,所以這段函數(shù)的輸出值只有1A。

所以,如下函數(shù),

function demo6() {

function counter() {

for(var count=1; ;count++) {

console.log(count+"A");

if(count===5) {return;}

console.log(count+"B");}

console.log(count+"C");}

counter();}

輸出值是1A,1B,2A,2B,3A,3B,4A,4B,5C。

除了return,還有其他可以讓for循環(huán)中斷的方式。

1.break

break語(yǔ)句會(huì)使運(yùn)行的程序立刻退出包含在最內(nèi)層的循環(huán)或者退出一個(gè)switch語(yǔ)句。由于它是用來(lái)退出循環(huán)或者switch語(yǔ)句,所以只有當(dāng)它出現(xiàn)在這些語(yǔ)句時(shí),這種形式的break語(yǔ)句才是合法的。如果一個(gè)循環(huán)的終止條件非常復(fù)雜,那么使用break語(yǔ)句來(lái)實(shí)現(xiàn)某些條件比用一個(gè)循環(huán)表達(dá)式來(lái)表達(dá)所有的條件容易得多。

2. continue

continue語(yǔ)句和break語(yǔ)句相似。所不同的是,它不是退出一個(gè)循環(huán),而是開始循環(huán)的一次新迭代。要注意的是continue語(yǔ)句只能用在while語(yǔ)句、do/while語(yǔ)句、for語(yǔ)句、或者for/in語(yǔ)句的循環(huán)體內(nèi),在其它地方使用都會(huì)引起錯(cuò)誤。

參考文獻(xiàn)

1. http://www.jb51.net/article/24101.htm

2. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/return

3. 紅寶書

相關(guān)PPT可見(jiàn):https://ptteng.github.io/PPT/PPT/js-01-return%E7%9A%84%E7%94%A8%E6%B3%95.html#/

以及騰訊視頻:https://v.qq.com/x/page/k0520zb48dg.html

問(wèn)題整理:

1. i++和++i的區(qū)別

++i使用的是前置運(yùn)算,先賦值再運(yùn)算,i++使用的是后置運(yùn)算,先運(yùn)算再賦值,詳見(jiàn)紅寶書

2. 關(guān)于閉包

閉包:當(dāng)function里嵌套function時(shí),內(nèi)部的function可以訪問(wèn)外部function里的變量。當(dāng)return的是內(nèi)部function時(shí),就是一個(gè)閉包。內(nèi)部function會(huì)close-over外部function的變量直到內(nèi)部function結(jié)束。

3. 迭代的含義

迭代是重復(fù)反饋過(guò)程的活動(dòng),其目的通常是為了逼近所需目標(biāo)或結(jié)果。每一次對(duì)過(guò)程的重復(fù)稱為一次“迭代”,而每一次迭代得到的結(jié)果會(huì)作為下一次迭代的初始值,for循環(huán)就是迭代的一種

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 工廠模式類似于現(xiàn)實(shí)生活中的工廠可以產(chǎn)生大量相似的商品,去做同樣的事情,實(shí)現(xiàn)同樣的效果;這時(shí)候需要使用工廠模式。簡(jiǎn)單...
    舟漁行舟閱讀 8,110評(píng)論 2 17
  • FreeCodeCamp - Basic JavaScript 寫在前面: 我曾經(jīng)在進(jìn)谷前刷過(guò)這一套題,不過(guò)當(dāng)時(shí)只...
    付林恒閱讀 16,575評(píng)論 5 28
  • 單例模式 適用場(chǎng)景:可能會(huì)在場(chǎng)景中使用到對(duì)象,但只有一個(gè)實(shí)例,加載時(shí)并不主動(dòng)創(chuàng)建,需要時(shí)才創(chuàng)建 最常見(jiàn)的單例模式,...
    Obeing閱讀 2,311評(píng)論 1 10
  • 最近遇到一些發(fā)展勢(shì)頭很好的B2B企業(yè),他們感覺(jué)到了一定規(guī)模之后,影響力起來(lái)了,受關(guān)注也多了,成長(zhǎng)遇到了產(chǎn)品、市場(chǎng)、...
    姐夫李閱讀 180評(píng)論 0 0
  • 1.大學(xué)時(shí)談過(guò)一段短暫的戀愛(ài),最終以被劈腿結(jié)束,這段感情成了我生活的一個(gè)轉(zhuǎn)折點(diǎn)。分手之后,我陷入了將近三年的低沉期...
    有花開閱讀 348評(píng)論 4 3

友情鏈接更多精彩內(nèi)容