javascript中的while迴圈和for迴圈

2021-08-04 13:31:03 字數 2492 閱讀 7725

先來看看生活中的一些場景:

(1)食堂阿姨打菜:接過顧客的餐盤→詢問菜品→打菜→遞迴餐盤,重複以上過程,直到所以顧客的菜都打完了。

(2)快遞員送快遞:檢視送件位址→趕往目的地→**告知收件人→收件人簽收→交快遞件,重複以上過程,直到所有需要送的快遞都處理完了。

以上場景都有乙個共同的特點:有條件重複地做一件事,每一次做的事情不同但類似。

程式是偽類解決實際問題的,實際問題中存在這重複動作,那麼程式中也應該有相應的描述,這就是迴圈

但是這兩種方案的描述方式都不太理想,如果是要加到10000呢?

注意觀察方案二,它重複地做一件事(將乙個數加到sum2中),每一次做的不同但是類似。

我們希望能找到一種更好的描述方式

/*方案三:改造方案二*/

var sum3 = 0;

var n = 1;

while(n <= 10)

方案三表達的含義和方案二一樣,但是表達方式要好得多,比如加到

10000,只需要把條件n<=10改為n<=10000

white是表示「當……則……」,也就是當某個條件成立時,則一直重複做。

開啟除錯工具,在watch視窗分別檢視sum、n以及n<=10的值,可以從指示器看到迴圈的執行過程,檢測變數的變化。

do……while迴圈和while迴圈的區別在於,前者是先執行後判斷(先斬後奏),後者則是先判斷再執行,如果條件不滿足,前者也會執行依次。所以do……while至少會執行依次。

案例:輸出所有水仙花數

案例:gdp**

總結一下迴圈的套路

(1)初始狀態

(2)迴圈條件

(3)迴圈體(要重複做的事情)

(4)為下次迴圈作準備()

那如何去寫迴圈的程式呢?回答四個問題:

(1)初始狀態是怎樣的

(2)重複做的條件是什麼

(3)重複做什麼

(4)怎麼過渡到下一次迴圈

水仙花數問題

gdp**

初始狀態

narnum = 100

var year = 2009;

var usgdp = 142562.75;

var chinagdp = 49089.82

迴圈條件

narnum <= 999

usgdp >= chinagdp

迴圈體var hundreds = math.floor(narnum / 100);

var decade = math.floor(narnum / 10) % 10;

var theunit = narnum % 10;

var sum = hundreds * hundreds * hundreds + decade * decade * decade + theunit * theunit * theunit;

if(sum == narnum)

usgdp = usgdp*1.02;

chinagdp = chinagdp*1.08;

為下次迴圈作準備

narnum++;

year++;

案例:計算圓周率,π=

(1-1/3+1/5-1/7+

……)*4

最後一項的絕對值小於

10-6

分析:將公式稍微變化一下

1-1/3+1/5-1/7+……

變化為(+1/1)+(-1/3)+(+1/5)+(-1/7)+……

那麼它和我們之前解決的1+2+3+……

+10的問題就非常類似了,都是累加的問題,只不過每次加的內容不同而已。

我們可以將每一項拆分為三部分:

t = 符號

*1/分母

(1)初始狀態是怎樣的

sum = 0;

t = 1;

sign = 1;

deno = 1;

(2)重複做的條件是什麼

|t| >= 10-6

(3)重複做什麼

sum += t;

(4)怎麼過渡到下一次迴圈

sign = -sign;

deno += 2;

t = sign*1/deno;

for迴圈是比較常用的乙個迴圈結構,能用while和do……while寫的迴圈都可以用for迴圈來寫,它把初始條件和為下次迴圈做準備的條件放在了for後面對括號中。

格式:for(初始條件;迴圈條件;為下次迴圈做準備)

找出所有水仙花數的案例,用for迴圈來寫

for(var num=100; num<=999; num++)

}

JavaScript中的this詳解

this屬於js的底層知識,了解this之後,能夠實現一些基本的功能,但是感覺最重要的是,this是物件導向必不可少的組成部分,如果希望能夠逐漸的掌握物件導向,this必然是不可少的。檢視this指向的一句話法則 永遠指向其所在函式的所有者如果沒有所有者時,指向window。理解this的要點 關鍵...

JavaScript中的setInterval用法

setinterval function,interval arg1,arg2,argn setinterval object,methodname,interval arg1,arg2,argn 第一種格式是標準動作面板中setinterval函式的預設語法,第二種格式是在專家模式動作中使用的方法...

JavaScript中的陣列

陣列 引數 返回值原陣列是否改變 1 向陣列尾部新增push 引數可以是乙個或多個 返回值是新增後陣列的長度 原陣列改變 2 刪除陣列的最後一項pop 沒有引數 返回值是刪除的那個數 原陣列改變 3 向陣列的頭部新增unshift 引數可以是乙個或多個 返回值是新增後陣列的長度 原陣列改變 4 刪除...