国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

你理解了for-in 和 for-of 嗎?他們有什么區(qū)別?

這篇具有很好參考價(jià)值的文章主要介紹了你理解了for-in 和 for-of 嗎?他們有什么區(qū)別?。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

【前言】

在 JavaScript 中,for 循環(huán)語(yǔ)句是編寫(xiě)復(fù)雜程序時(shí)經(jīng)常使用的一種工具。其中,for-in 和 for-of 是兩個(gè)最常用的變體。盡管這兩者非常相似,但它們?cè)诘鷮?duì)象方面有所不同。在本文中,我們將探討 for-in 和 for-of 的不同之處,以及如何正確使用它們。

【正文】

一、for-in 循環(huán)

for-in 循環(huán)是一種迭代對(duì)象屬性的方法。它可以用于遍歷對(duì)象中的所有可枚舉屬性,包括從原型鏈繼承的屬性。通常,我們使用 for-in 循環(huán)來(lái)遍歷對(duì)象的鍵名。

下面是一個(gè)簡(jiǎn)單的例子:

const person = {
  name: 'John',
  age: 30,
  gender: 'male'
};

for (const key in person) {
  console.log(key, person[key]);
}

在這個(gè)例子中,我們使用 for-in 循環(huán)遍歷了 person 對(duì)象的所有鍵名。輸出結(jié)果如下:

name John
age 30
gender male

需要注意的是,for-in 循環(huán)并不是按照對(duì)象屬性在對(duì)象中的順序迭代的。這是因?yàn)?JavaScript 中的對(duì)象屬性沒(méi)有固定的順序。因此,我們?cè)谑褂?for-in 循環(huán)迭代對(duì)象時(shí),不能保證它們的順序。

另外,由于 for-in 循環(huán)會(huì)遍歷對(duì)象的原型鏈,因此可能會(huì)迭代到不是自身屬性的屬性。為了避免這種情況,我們可以使用 hasOwnProperty 方法來(lái)檢查屬性是否為對(duì)象自身的屬性。

下面是一個(gè)使用 hasOwnProperty 的例子:

const person = {
  name: 'John',
  age: 30,
  gender: 'male'
};

for (const key in person) {
  if (person.hasOwnProperty(key)) {
    console.log(key, person[key]);
  }
}

在這個(gè)例子中,我們使用 hasOwnProperty 方法來(lái)檢查屬性是否為 person 對(duì)象自身的屬性。輸出結(jié)果與之前相同。

二、for-of 循環(huán)

for-of 循環(huán)是一種迭代可迭代對(duì)象的方法。它可以用于遍歷數(shù)組、字符串、Map、Set、TypedArray 等可迭代對(duì)象。通常,我們使用 for-of 循環(huán)來(lái)遍歷數(shù)組或字符串的值。

下面是一個(gè)簡(jiǎn)單的例子:

const arr = [1, 2, 3];

for (const value of arr) {
  console.log(value);
}

在這個(gè)例子中,我們使用 for-of 循環(huán)遍歷了數(shù)組 arr 的所有值。輸出結(jié)果如下:

1
2
3

需要注意的是,for-of 循環(huán)不適用于迭代對(duì)象屬性。如果我們嘗試使用 for-of 循環(huán)迭代對(duì)象,將會(huì)拋出 TypeError 異常。

下面是一個(gè)嘗試使用 for-of 循環(huán)迭代對(duì)象的例子:


const person = {
  name: 'John',
  age: 30,
  gender: 'male'
};

for (const value of person) {
  console.log(value);
}


在這個(gè)例子中,我們嘗試使用 for-of 循環(huán)迭代對(duì)象 person,但會(huì)拋出 TypeError 異常。

三、for-in 和 for-of 的區(qū)別

for-in 循環(huán)和 for-of 循環(huán)雖然都是用于迭代對(duì)象的方法,但它們有一些不同之處。

1. 迭代對(duì)象的內(nèi)容不同

for-in 循環(huán)迭代對(duì)象的是鍵名,而 for-of 循環(huán)迭代對(duì)象的是值。因此,for-in 循環(huán)適用于迭代對(duì)象的鍵名,而 for-of 循環(huán)適用于迭代對(duì)象的值。

2. 迭代對(duì)象的類(lèi)型不同

for-in 循環(huán)適用于遍歷對(duì)象,包括普通對(duì)象、數(shù)組、函數(shù)等,而 for-of 循環(huán)適用于遍歷可迭代對(duì)象,包括數(shù)組、字符串、Map、Set、TypedArray 等。

3. 迭代對(duì)象的順序不同

for-in 循環(huán)的迭代順序是不確定的,因?yàn)閷?duì)象的屬性沒(méi)有固定的順序。而 for-of 循環(huán)的迭代順序是確定的,因?yàn)榭傻鷮?duì)象的值是按照一定順序排列的。

4. 迭代對(duì)象的原理不同

for-in 循環(huán)遍歷對(duì)象時(shí),會(huì)遍歷對(duì)象的原型鏈,并且會(huì)包含從原型鏈繼承的屬性。而 for-of 循環(huán)遍歷的對(duì)象是可迭代對(duì)象,它們的值是可枚舉的。

四、如何選擇合適的循環(huán)方法

在選擇使用 for-in 循環(huán)還是 for-of 循環(huán)時(shí),我們需要考慮對(duì)象的類(lèi)型以及我們需要迭代的內(nèi)容。通常,如果我們需要迭代對(duì)象的鍵名,我們可以使用 for-in 循環(huán);如果我們需要迭代對(duì)象的值,我們可以使用 for-of 循環(huán)。

另外,當(dāng)我們需要遍歷數(shù)組或字符串時(shí),我們可以使用 for-of 循環(huán),因?yàn)樗梢蕴峁└玫男阅芎涂勺x性。相比之下,for-in 循環(huán)會(huì)遍歷對(duì)象的原型鏈,會(huì)導(dǎo)致性能下降。

如果我們需要遍歷一個(gè)對(duì)象,同時(shí)又需要過(guò)濾掉從原型鏈繼承的屬性,我們可以使用 hasOwnProperty 方法進(jìn)行過(guò)濾。例如:

const person = {
  name: 'John',
  age: 30,
  gender: 'male'
};

for (const key in person) {
  if (person.hasOwnProperty(key)) {
    console.log(key, person[key]);
  }
}


五、總結(jié)

for-in 循環(huán)和 for-of 循環(huán)是 JavaScript 中用于迭代對(duì)象的兩種方法。它們的區(qū)別在于迭代對(duì)象的內(nèi)容、類(lèi)型、順序和原理。通常,我們應(yīng)該根據(jù)需要選擇合適的循環(huán)方法,以提高效的迭代對(duì)象。

同時(shí),我們也需要注意到 for-in 循環(huán)的一些缺陷。由于它會(huì)遍歷對(duì)象的原型鏈,導(dǎo)致性能下降,而且不能保證迭代順序,所以我們應(yīng)該避免在數(shù)組和字符串上使用 for-in 循環(huán)。

最后,我們還可以使用其他一些方法來(lái)迭代對(duì)象,例如 forEach 方法、map 方法、reduce 方法等。這些方法不僅可以提供更好的性能和可讀性,還可以通過(guò)回調(diào)函數(shù)來(lái)實(shí)現(xiàn)更加靈活的操作。

總的來(lái)說(shuō),for-in 循環(huán)和 for-of 循環(huán)都是 JavaScript 中用于迭代對(duì)象的重要方法。我們需要根據(jù)對(duì)象的類(lèi)型和需要迭代的內(nèi)容來(lái)選擇合適的循環(huán)方法,以提高代碼的性能和可讀性。同時(shí),我們也需要注意 for-in 循環(huán)的缺陷,并且學(xué)會(huì)使用其他方法來(lái)迭代對(duì)象,以實(shí)現(xiàn)更加靈活和高效的操作。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-697654.html

到了這里,關(guān)于你理解了for-in 和 for-of 嗎?他們有什么區(qū)別?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • js for循環(huán)與for in循環(huán) for of循環(huán)的區(qū)別

    JavaScript中,for循環(huán)、for...in循環(huán)和for...of循環(huán)是用于迭代數(shù)組或?qū)ο髮傩缘牟煌绞健?for循環(huán): for循環(huán)是最常見(jiàn)的迭代方法,它允許你指定迭代的起始點(diǎn)、結(jié)束條件和每次迭代后的操作。它可以用于迭代數(shù)組和字符串。 例如,遍歷一個(gè)數(shù)組可以使用for循環(huán)的語(yǔ)法: for...in循

    2024年01月20日
    瀏覽(19)
  • Less、Sass/Scss是什么?他們有什么區(qū)別?

    是一種動(dòng)態(tài)樣式語(yǔ)言. 對(duì)CSS賦予了動(dòng)態(tài)語(yǔ)言的特性,如變量、繼承、運(yùn)算、函數(shù)。 Less 既可以在客戶(hù)端上運(yùn)行 (支持IE 6+, Webkit, Firefox),也可在服務(wù)端運(yùn)行。 是一種動(dòng)態(tài)樣式語(yǔ)言,Sass語(yǔ)法屬于縮排語(yǔ)法, 比css比多出好些功能(如變量、嵌套、運(yùn)算,混入(Mixin)、繼承、顏色處理,

    2023年04月22日
    瀏覽(24)
  • SpringBoot 和 SpringCloud 有什么區(qū)別,一起來(lái)學(xué)習(xí)了解他們

    SpringBoot 和 SpringCloud 有什么區(qū)別,一起來(lái)學(xué)習(xí)了解他們

    Spring Boot和Spring Cloud是兩個(gè)非常流行的Java開(kāi)發(fā)框架,它們都是由Spring Framework開(kāi)發(fā)的,但是它們的定位和功能有所不同。本文將介紹Spring Boot和Spring Cloud的區(qū)別。 Spring Boot是一個(gè)輕量級(jí)的應(yīng)用程序框架,它的目的是使Spring應(yīng)用程序的開(kāi)發(fā)變得更加快速和容易。Spring Boot通過(guò)自動(dòng)

    2024年02月14日
    瀏覽(20)
  • 關(guān)于分貝(dB)單位的解釋?zhuān)ɡ斫猓?,關(guān)于dB增益是什么意思,他們放大了多少倍?為何他們的計(jì)算公式不一樣。

    dB是一個(gè)數(shù)據(jù)存儲(chǔ)單位,也是量度兩個(gè)相同單位之?dāng)?shù)量比例的 計(jì)量單位 ,主要用于度量聲音強(qiáng)度,這里主要說(shuō)一下計(jì)量單位的理解和聲強(qiáng)的度量。 一,什么是分貝 分貝是較常用的計(jì)量單位??杀硎緸椋?1. 表示功率量之比的一種單位,等于功率強(qiáng)度之比的常用 對(duì)數(shù) 的10倍。

    2024年02月07日
    瀏覽(23)
  • 小程序(uniapp)頁(yè)面的跳轉(zhuǎn)方式有哪些,他們之間的區(qū)別是什么?

    1、uni.navigateTo: 保留當(dāng)前頁(yè)面,跳轉(zhuǎn)到應(yīng)用的某個(gè)頁(yè)面,使用 uni.navigateBack 可以返回原頁(yè)面。這種方式類(lèi)似于網(wǎng)頁(yè)的超鏈接跳轉(zhuǎn)。 2、uni.redirectTo: 關(guān)閉當(dāng)前頁(yè)面,跳轉(zhuǎn)大應(yīng)用內(nèi)的某個(gè)頁(yè)面。這種方式類(lèi)似于網(wǎng)頁(yè)的重定向。 3、uni.switchTab: 跳轉(zhuǎn)到tabBar頁(yè)面,并關(guān)閉其他所有非ta

    2024年02月11日
    瀏覽(26)
  • JS中的for in和for of

    在JavaScript中, for...in 和 for...of 都是用于迭代循環(huán)的結(jié)構(gòu): ? 1. for...in 循環(huán): for...in 循環(huán)主要用于遍歷對(duì)象的可枚舉屬性。這種循環(huán)不僅遍歷對(duì)象自身的屬性,還會(huì)遍歷原型鏈上的可枚舉屬性。它的語(yǔ)法如下: 其中 variable 是屬性名, object 是要遍歷的對(duì)象。 注意:雖然 f

    2023年04月20日
    瀏覽(15)
  • 數(shù)組的5種遍歷(for循環(huán)、for...in、for...of、forEach()、map()

    數(shù)組:內(nèi)存中一塊連續(xù)的存儲(chǔ)單元,這些存儲(chǔ)單元具有共同的名稱(chēng),不同的索引(下標(biāo))。 數(shù)組5種遍歷: 1、for循環(huán) ? ? ? ?任何數(shù)組都可以使用for循環(huán)進(jìn)行遍歷,使用頻率最高 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? for (let i = 0; i arr.length; i++) { ? ? ? ? ? ? ? ? ? ? ? ? ? ?

    2024年02月06日
    瀏覽(22)
  • 無(wú)涯教程-Javascript - For...in循環(huán)語(yǔ)句

    for ... in 循環(huán)用于循環(huán)訪問(wèn)對(duì)象的屬性,由于無(wú)涯教程尚未討論 Objects 對(duì)象,您就會(huì)發(fā)現(xiàn)此循環(huán)非常有用。 “ for...in”循環(huán)的語(yǔ)法為: 在每次迭代中,將 object 對(duì)象中的一個(gè)屬性分配給 variablename 變量,此循環(huán)一直進(jìn)行到對(duì)象的所有屬性。 請(qǐng)嘗試以下示例來(lái)實(shí)現(xiàn)\\\" for-in\\\"循環(huán),它

    2024年02月16日
    瀏覽(19)
  • Accurate 3D Prediction of Missing Teeth in Diverse Patterns for Precise Dental Implant Planning

    Accurate 3D Prediction of Missing Teeth in Diverse Patterns for Precise Dental Implant Planning

    近年來(lái),由于種植體的高成功率和美觀優(yōu)勢(shì),對(duì)種植體的需求激增。 然而,由于牙齒結(jié)構(gòu)的復(fù)雜性和牙齒脫落模式的可變性,準(zhǔn)確預(yù)測(cè)缺失牙齒的精確數(shù)字種植計(jì)劃仍然是一個(gè)挑戰(zhàn)。本研究提出了一種新的框架,用于準(zhǔn)確預(yù)測(cè)不同模式的缺牙,促進(jìn)數(shù)字化種植計(jì)劃。提出的框

    2024年01月23日
    瀏覽(34)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包