JavaScript循環(huán)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
要計(jì)算1+2+3,我們可以直接寫(xiě)表達(dá)式:
1 + 2 + 3; // 6
要計(jì)算1+2+3+...+10,勉強(qiáng)也能寫(xiě)出來(lái)。
但是,要計(jì)算1+2+3+...+10000,直接寫(xiě)表達(dá)式就不可能了。
為了讓計(jì)算機(jī)能計(jì)算成千上萬(wàn)次的重復(fù)運(yùn)算,我們就需要循環(huán)語(yǔ)句。
JavaScript的循環(huán)有兩種,一種是for循環(huán),通過(guò)初始條件、結(jié)束條件和遞增條件來(lái)循環(huán)執(zhí)行語(yǔ)句塊:
var x = 0;
var i;
for (i=1; i<=10000; i++) {
x = x + i;
}
x; // 50005000
讓我們來(lái)分析一下for循環(huán)的控制條件:
i=1 這是初始條件,將變量i置為1;
i<=10000 這是判斷條件,滿足時(shí)就繼續(xù)循環(huán),不滿足就退出循環(huán);
i++ 這是每次循環(huán)后的遞增條件,由于每次循環(huán)后變量i都會(huì)加1,因此它終將在若干次循環(huán)后不滿足判斷條件i<=10000而退出循環(huán)。
練習(xí)
利用for循環(huán)計(jì)算1 * 2 * 3 * ... * 10的結(jié)果。
for循環(huán)最常用的地方是利用索引來(lái)遍歷數(shù)組:
var arr = ['Apple', 'Google', 'Microsoft'];
var i, x;
for (i=0; i<arr.length; i++) {
x = arr[i];
alert(x);
}
for循環(huán)的3個(gè)條件都是可以省略的,如果沒(méi)有退出循環(huán)的判斷條件,就必須使用break語(yǔ)句退出循環(huán),否則就是死循環(huán):
var x = 0;
for (;;) { // 將無(wú)限循環(huán)下去
if (x > 100) {
break; // 通過(guò)if判斷來(lái)退出循環(huán)
}
x ++;
}
for ... in
for循環(huán)的一個(gè)變體是for ... in循環(huán),它可以把一個(gè)對(duì)象的所有屬性依次循環(huán)出來(lái):
var o = {
name: 'Jack',
age: 20,
city: 'Beijing'
};
for (var key in o) {
alert(key); // 'name', 'age', 'city'
}
要過(guò)濾掉對(duì)象繼承的屬性,用hasOwnProperty()來(lái)實(shí)現(xiàn):
var o = {
name: 'Jack',
age: 20,
city: 'Beijing'
};
for (var key in o) {
if (o.hasOwnProperty(key)) {
alert(key); // 'name', 'age', 'city'
}
}
由于Array也是對(duì)象,而它的每個(gè)元素的索引被視為對(duì)象的屬性,因此,for ... in循環(huán)可以直接循環(huán)出Array的索引:
var a = ['A', 'B', 'C'];
for (var i in a) {
alert(i); // '0', '1', '2'
alert(a[i]); // 'A', 'B', 'C'
}
請(qǐng)注意,for ... in對(duì)Array的循環(huán)得到的是String而不是Number。
while
for循環(huán)在已知循環(huán)的初始和結(jié)束條件時(shí)非常有用。而上述忽略了條件的for循環(huán)容易讓人看不清循環(huán)的邏輯,此時(shí)用while循環(huán)更佳。
while循環(huán)只有一個(gè)判斷條件,條件滿足,就不斷循環(huán),條件不滿足時(shí)則退出循環(huán)。比如我們要計(jì)算100以?xún)?nèi)所有奇數(shù)之和,可以用while循環(huán)實(shí)現(xiàn):
var x = 0;
var n = 99;
while (n > 0) {
x = x + n;
n = n - 2;
}
x; // 2500
在循環(huán)內(nèi)部變量n不斷自減,直到變?yōu)?1時(shí),不再滿足while條件,循環(huán)退出。
do ... while
最后一種循環(huán)是do { ... } while()循環(huán),它和while循環(huán)的唯一區(qū)別在于,不是在每次循環(huán)開(kāi)始的時(shí)候判斷條件,而是在每次循環(huán)完成的時(shí)候判斷條件:
var n = 0;
do {
n = n + 1;
} while (n < 100);
n; // 100
用do { ... } while()循環(huán)要小心,循環(huán)體會(huì)至少執(zhí)行1次,而for和while循環(huán)則可能一次都不執(zhí)行。
練習(xí)
請(qǐng)利用循環(huán)遍歷數(shù)組中的每個(gè)名字,并顯示Hello, xxx!
請(qǐng)嘗試for循環(huán)和while循環(huán),并以正序、倒序兩種方式遍歷。
小結(jié)
循環(huán)是讓計(jì)算機(jī)做重復(fù)任務(wù)的有效的方法,有些時(shí)候,如果代碼寫(xiě)得有問(wèn)題,會(huì)讓程序陷入“死循環(huán)”,也就是永遠(yuǎn)循環(huán)下去。JavaScript的死循環(huán)會(huì)讓瀏覽器無(wú)法正常顯示或執(zhí)行當(dāng)前頁(yè)面的邏輯,有的瀏覽器會(huì)直接掛掉,有的瀏覽器會(huì)在一段時(shí)間后提示你強(qiáng)行終止JavaScript的執(zhí)行,因此,要特別注意死循環(huán)的問(wèn)題。
在編寫(xiě)循環(huán)代碼時(shí),務(wù)必小心編寫(xiě)初始條件和判斷條件,尤其是邊界值。特別注意i < 100和i <= 100是不同的判斷邏輯。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- js數(shù)組循環(huán)遍歷數(shù)組內(nèi)所有元素的方法
- Js setInterval與setTimeout(定時(shí)執(zhí)行與循環(huán)執(zhí)行)的代碼(可以傳入?yún)?shù))
- JS數(shù)組的遍歷方式for循環(huán)與for...in
- js 數(shù)組的for循環(huán)到底應(yīng)該怎么寫(xiě)?
- javascript 循環(huán)讀取JSON數(shù)據(jù)的代碼
- js和jquery中循環(huán)的退出和繼續(xù)下一個(gè)循環(huán)
- JavaScript中循環(huán)遍歷Array與Map的方法小結(jié)
- javaScript如何跳出多重循環(huán)break、continue
- javascript forEach通用循環(huán)遍歷方法
- javascript下for循環(huán)用法小結(jié)
相關(guān)文章
uni-app實(shí)現(xiàn)點(diǎn)贊評(píng)論功能
這篇文章主要介紹了uni-app實(shí)現(xiàn)點(diǎn)贊評(píng)論功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
Three.js實(shí)現(xiàn)臉書(shū)元宇宙3D動(dòng)態(tài)Logo效果
本文主要講述通過(guò) Three.js + Blender 技術(shù)棧,實(shí)現(xiàn) Meta 公司炫酷的 3D 動(dòng)態(tài) Logo,內(nèi)容包括基礎(chǔ)模型圓環(huán)、環(huán)面扭結(jié)、管道及模型生成、模型加載、添加動(dòng)畫(huà)、添加點(diǎn)擊事件、更換材質(zhì)等2021-11-11
微信小程序swiper實(shí)現(xiàn)文字縱向輪播提示效果
這篇文章主要介紹了微信小程序swiper實(shí)現(xiàn)文字縱向輪播提示效果,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01
后端代碼規(guī)范避免數(shù)組下標(biāo)越界
這篇文章主要為大家介紹了后端開(kāi)發(fā)中的代碼如何規(guī)范避免數(shù)組下標(biāo)越界示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
JS實(shí)現(xiàn)時(shí)間軸自動(dòng)播放
這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)時(shí)間軸自動(dòng)播放,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08
分享bootstrap學(xué)習(xí)筆記心得(組件及其屬性)
Bootstrap是一種web框架,是基于HTML,CSS和JS的一種目前較為流行的前端框架。本篇文章將總結(jié)常用組件及其屬性,需要的朋友參考下吧2017-01-01
JavaScript給每一個(gè)li節(jié)點(diǎn)綁定點(diǎn)擊事件的實(shí)現(xiàn)方法
這篇文章主要介紹了JavaScript給每一個(gè)li節(jié)點(diǎn)綁定點(diǎn)擊事件的實(shí)現(xiàn)方法,包括js循環(huán)給li綁定參數(shù)不同的點(diǎn)擊事件,需要的朋友可以參考下2016-12-12
javaScript 讀取和設(shè)置文檔元素的樣式屬性
有時(shí)候我們需要用js設(shè)置文檔的樣式屬性,下面就是一些方法與原理分析,大家可以看下,應(yīng)該就沒(méi)問(wèn)題了。2009-04-04
基于JS代碼實(shí)現(xiàn)當(dāng)鼠標(biāo)懸停表格上顯示這一格的全部?jī)?nèi)容
這篇文章主要介紹了基于JS代碼實(shí)現(xiàn)當(dāng)鼠標(biāo)懸停表格上顯示這一格的全部?jī)?nèi)容 的相關(guān)資料,需要的朋友可以參考下2016-06-06

