亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

js中遞歸和定時器的示例分析

發布時間:2021-07-23 11:06:50 來源:億速云 閱讀:150 作者:小新 欄目:web開發

這篇文章將為大家詳細講解有關js中遞歸和定時器的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

遞歸:是一個函數通過調用自身的情況下構成的;

首先上個例子:

Function factorial(num){
 if(num<=1){
 return 1;
 }else{
 return num*factorial(num-1);
 }
}

這是一個經典的遞歸階乘函數,但是在js中這么調用可能會出現一些錯誤:例如如下代碼

var anotherFactorial = factorial;
factorial = null;
alert(anotherFactorial)// 出錯

以上代碼先把factorial()函數保存在變量anotherFactorial中,然后將factorial變量設置為null,結果指向原始函數的引用只剩下一個。但再接下來調用anotherFactioral()時候,由于必須執行factorial函數,而factoial已經不再是函數,所以就會導致錯誤,再這種情況下,使用arguments.callee可以解決這個問題。

arguments.callee是一個指向正在執行的函數的指針,因此可以用來實現對函數的遞歸調用。

例如:

function factorial (num){
 if(num){
 return 1;
 }else{
 return num*arguments.callee;
 }
}

arguments.callee 優點:

1、可以確保無論怎樣調用函數都不會出問題。因此編寫遞歸函數時候,使用argments.callee總比使用函數名更保險;

注意點:嚴格模式下無效,會報錯

嚴格模式下寫法:

var factorial = (function f(){
 if(num<1){
 return 1;
 }else{
 return num*f(num-1);
 }
})

二、與定時器的結合使用:

js是單線程語言,但他允許通過設置超時調用和間歇時間來調度代碼在特定的時刻執行。前者是在指定的時間過后執行代碼,而后者則是每隔指定的時間就執行一次代碼。

參數:要執行的代碼 和 以 毫秒表示時間

//不建議傳字符串,傳遞字符串可能導致性能損失 
setTimeout("alter('hello word')", 1000);
//推薦方式
setTimeout(function(){
 alter("Hello world");
},1000)
setInterval(function(){
 alter("Hello world");
},1000)

注意點:結束

超時調用的代碼都是在全局作用域執行的,因此函數中this的值在非嚴格模式下指向window對象,在嚴格模式下是undefined;

實際應用中:

使用超時調用來模擬間歇調用是一種最佳模式,在開發環境下,很少使用真正的間歇調用,原因是后一個間歇調用可能會在前一個間歇調用之間啟動。

var num = 0, max = 0;
function incrrmentNumber{
 num++;
 if(num < max){
 setTimeout(incrrmentNumber,500);
 }else{
 alert("Done");
 }
}
setTimeout(incrrmentNumber,500);

如果像上面那樣使用超時調用,則可以避免這一點。所以不要使用間歇調用;

關于“js中遞歸和定時器的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

js
AI

沾化县| 托克逊县| 吴江市| 饶阳县| 姜堰市| 乌拉特前旗| 西林县| 安达市| 博乐市| 双桥区| 长岛县| 平凉市| 秭归县| 泾阳县| 南京市| 乳山市| 宝鸡市| 友谊县| 井研县| 二手房| 东至县| 新丰县| 拉孜县| 福贡县| 策勒县| 思茅市| 兴海县| 苗栗市| 同仁县| 宣威市| 荣昌县| 利川市| 阿城市| 加查县| 博白县| 金寨县| 虎林市| 冕宁县| 茶陵县| 元阳县| 武平县|