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

for in和for of的區(qū)別

這篇具有很好參考價值的文章主要介紹了for in和for of的區(qū)別。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

for in

for in 使用于可枚舉的數(shù)據(jù) 如 對象 數(shù)組 字符串
什么是可枚舉的:屬性的enumerable值為true,表示可枚舉
可以通過es7新增的屬性 Object.getOwnPropertyDescriptors()驗證 查看
Object.getOwnPropertyDescriptor() 方法用于 返回 指定 對象 上一個自有 屬性 對應(yīng)的屬性描述符

// 通過Object.getOwnPropertyDescriptors()
const a = [1, 23, 3]
console.log(Object.getOwnPropertyDescriptors(a));
const b = { a: 1, b: 2 }
console.log(Object.getOwnPropertyDescriptors(b));
const c = 'string'
console.log(Object.getOwnPropertyDescriptors(c));

看下圖打印的信息,enumerable值為true表示都是可迭代對象
for in和for of的區(qū)別
for in 不僅能便利自身的屬性,他還能便利原型鏈上可枚舉的屬性
他返回的是key的值,并且不能保證順序

let a = [1,2,3]
Array.prototype.num = 4
for(let i in a){
  console.log(i) // 0,1,2,num
  console.log(a[i]) // 1,2,3,4
}
// 他返回的是value的值 
for(let j of a){
  console.log(j) //  1,2,3
}

for of

for of 適用于可迭代數(shù)據(jù)
什么是可迭代數(shù)據(jù) :在原型鏈上具有Symbol.iterator屬性,通過調(diào)用.next() 方法,返回對應(yīng)的屬性
可迭代數(shù)據(jù):array string Map Set 函數(shù)的arguments對象 還有我們的生成器函數(shù)function*( ){ }

	const a = [1,2,3]
	//a.prototype上有這么一個屬性 Symbol(Symbol.iterator):? values() 表示可迭代的
	同理 string Map Set 這些原型上都有這個屬性 

for of 只能便利自身的屬性
他得到的是value 具體和迭代器的內(nèi)部實現(xiàn)有關(guān)文章來源地址http://www.zghlxwxcb.cn/news/detail-470988.html

const arr = [1, 2, 3]
arr[Symbol.iterator] = function () {
  const that = this
  return {
    i: 0,
    next() {
      // 正常的 通過 for of 返回value
      return this.i < that.length ? { value: that[this.i++], done: false } : { value: undefined, done: true }
    }
  }
}

for (let i of arr) {
  console.log(i); // 1,2,3
}

// 改寫Symbol.iterator的next方法
arr[Symbol.iterator] = function () {
  const that = this
  return {
    i: 0,
    next() {
      // 通過改寫之后 for of也能返回key
      return this.i < that.length ? { value: this.i++, done: false } : { value: undefined, done: true } 
    }
  }
}

for (let i of arr) {
  console.log(i); // 0,1,2 輸出的是key
}

到了這里,關(guān)于for in和for of的區(qū)別的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • LeetCode 2496. Maximum Value of a String in an Array【字符串,數(shù)組】簡單

    本文屬于「征服LeetCode」系列文章之一,這一系列正式開始于2021/08/12。由于LeetCode上部分題目有鎖,本系列將至少持續(xù)到刷完所有無鎖題之日為止;由于LeetCode還在不斷地創(chuàng)建新題,本系列的終止日期可能是永遠(yuǎn)。在這一系列刷題文章中,我不僅會講解多種解題思路及其優(yōu)化,

    2024年02月11日
    瀏覽(17)
  • 你理解了for-in 和 for-of 嗎?他們有什么區(qū)別?

    【前言】 在 JavaScript 中,for 循環(huán)語句是編寫復(fù)雜程序時經(jīng)常使用的一種工具。其中,for-in 和 for-of 是兩個最常用的變體。盡管這兩者非常相似,但它們在迭代對象方面有所不同。在本文中,我們將探討 for-in 和 for-of 的不同之處,以及如何正確使用它們。 【正文】 一、for-

    2024年02月09日
    瀏覽(20)
  • Kotlin基礎(chǔ)——枚舉、When、in、for

    聲明只有值的枚舉 此外還可以增加屬性和方法, 如果需要在枚舉類中定義方法,要使用分號把枚舉常量列表和方法定義分開 ,這也是Kotlin唯一必須使用分號的地方 可使用多行表達(dá)式函數(shù)體 上面只會匹配對應(yīng)分支, 如果需要多個值合并,則使用逗號隔開 when可以使用任何對

    2024年02月06日
    瀏覽(22)
  • 【每日一題Day217】LC2451差值數(shù)組不同的字符串 | 枚舉+變量記錄

    給你一個字符串?dāng)?shù)組 words ,每一個字符串長度都相同,令所有字符串的長度都為 n 。 每個字符串 words[i] 可以被轉(zhuǎn)化為一個長度為 n - 1 的 差值整數(shù)數(shù)組 difference[i] ,其中對于 0 = j = n - 2 有 difference[i][j] = words[i][j+1] - words[i][j] 。注意兩個字母的差值定義為它們在字母表中 位置

    2024年02月07日
    瀏覽(16)
  • Integer.valueOf()用于字符和字符串的區(qū)別

    LeetCode 17?電話號碼的字母組合 先貼代碼 踩坑: 1、假設(shè)digits = \\\"23\\\",deepfloor = 0。 如果num = ?Integer.valueOf(digits.charAt(deepfloor));? num=50,這是為什么呢,因為digits.charAt(deepfloor)=\\\'2\\\',對應(yīng)的ASCII值為50... 而?num = ?Integer.valueOf(digits.substring(deepfloor,deepfloor+1)); num=2,才能得到正確結(jié)果

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

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

    2023年04月20日
    瀏覽(15)
  • jquery和php json字符串轉(zhuǎn)數(shù)組對象 和 數(shù)組對象轉(zhuǎn)json字符串

    要實現(xiàn)從對象轉(zhuǎn)換為 JSON 字符串,使用 JSON.stringify( ) 方法: 要實現(xiàn)從 JSON 轉(zhuǎn)換為對象,使用 JSON.parse() 方法: 數(shù)組變字符串 字符串變數(shù)組 json轉(zhuǎn)數(shù)組?? json_decode(? string $json ,? bool $assoc = false ,? int $depth = 512 ,? int $options = 0 ) $json:待解碼的 json string 格式的字符串。這個函數(shù)

    2024年02月13日
    瀏覽(32)
  • js中的內(nèi)置對象、數(shù)學(xué)對象、日期對象、數(shù)組對象、字符串對象

    js中的內(nèi)置對象、數(shù)學(xué)對象、日期對象、數(shù)組對象、字符串對象

    car、computer div、p window、console 數(shù)學(xué)對象 Math (object類型) 1、圓周率 Math.PI 2、向下取整(返回值) Math.floor() 3、向上取整(返回值) Math.ceil() 4、四舍五入 Math.round() 5、隨機(jī)數(shù) 0x1 Math.random() 6、絕對值 Math.abs() 7、最大值 Math.max() 8、最小值 Math.min() 9、指數(shù)冪 Math.pow(底數(shù),指數(shù)) 10、平

    2024年01月24日
    瀏覽(28)
  • 如何將JSON字符串?dāng)?shù)組轉(zhuǎn)對象集合

    1、、、引入jar 包 2、Java對象轉(zhuǎn)成JSON格式 3、JSON格式字符串轉(zhuǎn)換成Java對象 3.1、直接將JSON字符串轉(zhuǎn)換成Java對象 3.2、先將JSON字符串轉(zhuǎn)換成JSON對象,再轉(zhuǎn)換成Java對象 3.3、如果JSON字符串是一個JSON數(shù)組,并且數(shù)組里面存放的同一種類型的對象,可以將這個JSON數(shù)組轉(zhuǎn)換成Java的Li

    2024年02月02日
    瀏覽(19)
  • 【Java 數(shù)組與對象】數(shù)組對象和對象數(shù)組的區(qū)別(127)

    數(shù)組對象 :(對象里面屬性包含數(shù)組)本質(zhì)是對象,即一個數(shù)組對象,該數(shù)組里面存儲的數(shù)據(jù)類型可以是各種數(shù)據(jù)類型; 對象數(shù)組 :(數(shù)組里面元素包含對象)對象數(shù)組是指數(shù)組元素是對象的數(shù)組:是由一組對象引用組成的數(shù)組; 測試案例: Person 對象: Car對象: 測試D

    2024年02月10日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包