日韩欧美人妻无码精品白浆,www.大香蕉久久网,狠狠的日狠狠的操,日本好好热在线观看

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

js循環(huán)結(jié)構(gòu)注意事項(xiàng)

freeflydom
2025年6月4日 8:37 本文熱度 608

循環(huán)作為 算法與數(shù)據(jù)結(jié)構(gòu) 中的基石,JS 與其他編程語言一樣,都提供了多種循環(huán)結(jié)構(gòu)用于處理數(shù)據(jù)。

for 循環(huán)

事物的開端往往都是從最常用的開始,循環(huán)結(jié)構(gòu)咱們從 for 循環(huán)說起。

語法:

for (初始化; 條件; 增量) {
  // ...
}

示例:

// 增量每次 +1
for (let i = 0; i < 10; i++) {
  console.log(i);
}
// 增量每次 +2
for (let i = 0; i < 10; i += 2) {
  console.log(i);
}

性能優(yōu)化:

在使用 for 循環(huán)遍歷數(shù)組的時(shí)候,可以提前緩存數(shù)組長度,減少 length 的訪問次數(shù)。

const arr = ['前', '端', '路', '引'];
// 提前使用 len 緩存數(shù)組長度
for (let i = 0, len = arr.length; i < len; i++) {
  console.log(arr[i]);
}

此示例中使用了 let 同時(shí)聲明了多個(gè)變量,在常規(guī)的代碼編寫中,不建議這么使用,但在循環(huán)體這種特殊情況下,這么寫也能接受。

// 同時(shí)聲明多個(gè)變量
let a = '前端路引', b = 2, c = true;

增量不一定要使用 i++ 自增,也可以使用 i-- 遞減,或者使用 i += 2 步進(jìn),甚至可以是 i += 10。

for in 循環(huán)

ES6 規(guī)范出現(xiàn)之前,只能使用 for in 循環(huán)遍歷對象,但這哥們有個(gè)坑,不止會(huì)遍歷對象自身屬性,還能遍歷原型鏈上可枚舉屬性。

const obj1 = {
  name: '前端路引', 
  age: 1,
  'favorite-color': 'red', 
}
for (let key in obj1) {
  console.log(key, obj1[key]);
}
/*
// 輸出結(jié)果
name 前端路引
age 1
favorite-color red
*/

看個(gè)遍歷原型鏈例子:

// 如果有兄弟不小心給對象的原型鏈上填了一筆
Object.prototype.test = '我是原型鏈上的測試屬性';
const obj1 = {
  name: '前端路引', 
  age: 1,
  'favorite-color': 'red', 
}
for (let key in obj1) {
  console.log(key, obj1[key]);
}
/*
// 輸出結(jié)果
name 前端路引
age 1
favorite-color red
test 我是原型鏈上的測試屬性
*/
for (const key in obj1) {
  if (obj.hasOwnProperty(key)) {  // 過濾掉原型鏈屬性
    console.log(key, obj1[key]);
  }
}
/*
// 輸出結(jié)果
name 前端路引
age 1
favorite-color red
*/

如上所示,代碼編寫規(guī)范建議不要對 JS 自身的原型鏈做修改,擴(kuò)展原型鏈雖然方便了一些對象操作,但實(shí)際上這是埋了雷的,不知道啥時(shí)候就會(huì)引爆??!

在使用 for in 循環(huán)也需要注意原型鏈的屬性,必須使用 hasOwnProperty 方法來過濾掉原型鏈上的屬性。

for of 循環(huán)

由于 for in 的各種弊端,后來定規(guī)范的大佬們,就新增了一個(gè) for of 循環(huán)用于遍歷可迭代對象,比如:數(shù)組、字符串、Set、Map 等等。

const obj1 = {
  name: '前端路引', 
  age: 1,
  'favorite-color': 'red', 
}
// for of 循環(huán)
for (let [key, value] of Object.entries(obj1)) {
  console.log(key, value);
}
/* // 以上 let [key, value] 使用了 解構(gòu)賦值,其代碼等于
for (let item of Object.entries(obj1)) {
  const [key, value] = item;
  console.log(key, value);
}
// 又等于
for (let item of Object.entries(obj1)) {
  const key = item[0];
  const value = item[1];
  console.log(key, value);
}
*/

for of 無法直接遍歷對象,需要遍歷對象時(shí),需使用內(nèi)置方法 Object.entries 將對象轉(zhuǎn)為數(shù)組,再使用 for of 遍歷,或者使用 Object.keys/Object.values 將對象轉(zhuǎn)為鍵/值數(shù)組再遍歷。

相比于 for in 循環(huán),for of 循環(huán)性能更好,也不用考慮原型鏈問題。

while 循環(huán)

while 循環(huán)多用于不確定循環(huán)次數(shù)的應(yīng)用場景,比如讀取文件數(shù)據(jù)流,并不知道需要循環(huán)多少次才能讀取完。

let i = 0;
while (i < 3) {
  console.log(i);
  i++;
}

一般能用 for 循環(huán)的場景,都能使用 while 循環(huán)替代。

do while 循環(huán)

這個(gè)循環(huán)可有意思了,不管條件是否滿足,都會(huì)先跑一次循環(huán)體,再判斷條件。

應(yīng)用場景例子:必須讓用戶先輸入,再判斷條件,直到輸入正確才繼續(xù)。

let userInput;
do {
  userInput = prompt("請輸入一個(gè)大于 10 的數(shù)字:");
} while (isNaN(userInput) || Number(userInput) <= 10);
console.log("有效輸入:", userInput);

死循環(huán)

在使用循環(huán)遍歷時(shí)候,需特別注意 死循環(huán) 問題,條件處理不好,就進(jìn)入死循環(huán),導(dǎo)致程序崩潰。

比如:

let i = 0;
while (i < 3) {
  console.log(i);
  // i++; // 忘記修改 i 的值,導(dǎo)致進(jìn)入死循環(huán)
}

善用退出循環(huán)

continue / break / return 三個(gè)關(guān)鍵字都可以用來處理循環(huán)邏輯,不同的是:

  • continue:跳過當(dāng)前循環(huán),繼續(xù)下一次循環(huán)。
  • break:跳出當(dāng)前循環(huán),不再繼續(xù)循環(huán)。
  • return:跳出當(dāng)前函數(shù),不再繼續(xù)執(zhí)行。

continue 示例:

function loop1 () {
  for (let i = 0; i < 10; i++) {
    if (i % 2 === 0) {
      continue; // 跳過偶數(shù)次循環(huán),只輸出奇數(shù)次循環(huán)
    }
    console.log(i); // 輸出 1 3 5 7 9
  }
  console.log('循環(huán)結(jié)束'); // 會(huì)執(zhí)行
}
loop1()

break 示例:

function loop2 () {
  for (let i = 0; i < 10; i++) {
    if (i === 5) {
      break; // 在第 6 次循環(huán)退出
    }
    console.log(i); // 輸出 0 1 2 3 4
  }
  console.log('循環(huán)結(jié)束'); // 會(huì)執(zhí)行
}
loop2()

return 示例:

function loop3 () {
  for (let i = 0; i < 10; i++) {
    if (i === 5) {
      return; // 在第 6 次循環(huán)退出函數(shù),不會(huì)執(zhí)行循環(huán)體后面的代碼
    }
    console.log(i); // 輸出 0 1 2 3 4
  }
  console.log('循環(huán)結(jié)束'); // 此行代碼不會(huì)執(zhí)行
}
loop3()

三個(gè)退出循環(huán)關(guān)鍵字都可以用于所有的循環(huán)語句,不要局限于 for 循環(huán)~~

寫在最后

如果說算法是程序的靈魂,那么循環(huán)可以算是算法的基石,很多常見的算法都需要使用循環(huán)實(shí)現(xiàn),比如各種數(shù)組排序算法、查找算法、最短路徑算法等等。

循環(huán)是程序中的必修課,任何編程語言都有它的身影。

轉(zhuǎn)自https://www.cnblogs.com/linx/p/18908725


該文章在 2025/6/4 8:37:25 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲(chǔ)管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

国产∧v片| 中文无码国产精选| 亚洲精品视频伦理| 日日夜夜国产第一| 久久AV少妇精品| 国产精品自在欧美一区| 人妻中文字幕不卡有码视频| 精品国产一区二区三区| 亚洲激情图片网站| 香蕉快播超碰| 亚洲欧美国产三区| 色综合色成人小说| 亚洲精品伦理AV| 日韩中文字幕乱倫| 亚洲毛片果冻传媒黄片| 伦理电线在线网站| 中文人妻精品视频| 日日爽日日操| 亚洲激情综合五月天婷婷| 欧美日韩分类一区二区| 欧美+国产+日韩+麻豆+天美| 日本不卡一二区免费更新| 美女91在线播放| 欧美日韩cao| 露脸刺激国产日韩| 欧美 日韩 在线成人| 国产三区欧美| 玖玖资源无码一区| 美女在线糙比| 自拍偷拍三一区| 欧美灌肠一区二区四区 | 91精品国产综合久久喷水蘑菇| 人妻少妇-nc18嫩草| 自拍偷拍的色图| 深夜A久久久| 欧美性受XXX黑人性爽XYX| 亚洲成人免费A V| 嫩高潮合集| 久久婷婷国产麻豆精品电影| 国产伦理片在线播放中文字幕| 久久一区麻豆|