国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

JavaScript中三種for循環(huán)語(yǔ)句的使用總結(for、for

發(fā)布時(shí)間:2021-08-17 12:16 來(lái)源: 閱讀:0 作者:編程三昧 欄目: JavaScript 歡迎投稿:712375056

前言

每個(gè)接觸JS的開(kāi)發(fā)人員都不可避免的與for循環(huán)打交道,畢竟這是遍歷必不可少的工具之一。JavaScript 中的 for 循環(huán)語(yǔ)句相信大家都已經(jīng)快用厭了,現在有好多文章都在講怎么減少代碼中的 for 循環(huán)語(yǔ)句,但是,你又不得不承認它們真的很有用。今天,我來(lái)總結一下前端 JavaScript 中三種 for 循環(huán)語(yǔ)句。

for

這大概是應用最廣的循環(huán)語(yǔ)句了吧,簡(jiǎn)單實(shí)用,且大多數時(shí)候性能還是在線(xiàn)的,唯一的缺點(diǎn)大概就是太普通,沒(méi)有特色,導致很多人現在不愿用它。

const array = [4, 7, 9, 2, 6];
for (let index = 0; index < array.length; index++) {
    const element = array[index];
    console.log(element);
}
// 4, 7, 9, 2, 6

for...in

for...in 語(yǔ)句可以以任意順序遍歷一個(gè)對象的除 Symbol 以外的可枚舉屬性。

const temp = {name: "temp"};
function Apple() {
    this.color = 'red';
}

Apple.prototype = temp;

const obj = new Apple();

for (const prop in obj) {
    console.log(`obj.${ prop } = ${ obj[prop] }`);
}

// obj.color = red
// obj.name = temp

如果你只要考慮對象本身的屬性,而不是它的原型,那么使用  getOwnPropertyNames() 或執行 hasOwnProperty() 來(lái)確定某屬性是否是對象本身的屬性。

const temp = {name: "temp"};
function Apple() {
    this.color = 'red';
}

Apple.prototype = temp;

const obj = new Apple();

for (const prop in obj) {
    if (obj.hasOwnProperty(prop)) {
        console.log(`obj.${ prop } = ${ obj[prop] }`);
    }
}

// obj.color = red

當然,也可以用來(lái)遍歷數組。

const arr = [1, 2, 3, 4, 5];
for (const key in arr) {
    console.log(key)
}
// 0,1,2,3,4

使用 for...in 可以遍歷數組,但是會(huì )存在以下問(wèn)題:

  1. index 索引為字符串型數字(注意,非數字),不能直接進(jìn)行幾何運算。
  2. 遍歷順序有可能不是按照實(shí)際數組的內部順序(可能按照隨機順序)。

所以一般不建議使用 for...in 來(lái)遍歷數組。

for...of

for...of 語(yǔ)句在可迭代對象(包括 Array,Map,Set,String,TypedArray,arguments 對象等等)上創(chuàng )建一個(gè)迭代循環(huán),調用自定義迭代鉤子,并為每個(gè)不同屬性的值執行語(yǔ)句。

const array = ['a', 'b', 'c'];
for (const element of array) {
    console.log(element);
}

// a
// b
// c

for...of 和 for...in 的區別:

  • for...in 語(yǔ)句以任意順序迭代對象的可枚舉屬性。
  • for...of 語(yǔ)句遍歷可迭代對象定義要迭代的數據。
Object.prototype.objCustom = function () { };
Array.prototype.arrCustom = function () { };

let iterable = [3, 5, 7];
iterable.foo = 'hello';

for (const key in iterable) {
    console.log(key); // logs 0, 1, 2, "foo", "arrCustom", "objCustom"
}
// 0, 1, 2, "foo", "arrCustom", "objCustom"

for (const key of iterable) {
    console.log(key);
}
// 3, 5, 7

使用 for...of 遍歷 Map 結構:

let nodes = new Map();
nodes.set("node1", "t1")
    .set("node2", "t2")
    .set("node3", "t3");

for (const [node, content] of nodes) {
    console.log(node, content);
}
// node1 t1
// node2 t2
// node3 t3

可以看出,使用 for...of 遍歷 Map 結構還是挺方便的,推薦使用!

總結

  1. 如果普通 for 循環(huán)用膩了,推薦使用 for...of 來(lái)替代。
  2. 這三種循環(huán)都可以使用 break 關(guān)鍵字來(lái)終止循環(huán),也可以使用 continue 關(guān)鍵字來(lái)跳過(guò)本次循環(huán)。
  3. for...of 循環(huán)的適用范圍最大。

到此這篇關(guān)于JavaScript中三種for循環(huán)語(yǔ)句使用總結的文章就介紹到這了,更多相關(guān)JS中for循環(huán)語(yǔ)句內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。

麻豆久久久9性大片| 小泽マリアAV无码观看| 中文字幕乱码人妻波多野结衣| a一区二区三区乱码在线 | 欧洲| 99热亚洲色精品国产88| 亚洲熟女AV综合网五月|