大家好,我是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)就是迭代的一種