0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【javascript】for...ofの反復可能性

Posted at

for...of

イテレーターを持つオブジェクトの反復操作を行う。
※イテレーター:反復操作を行う際に使用するオブジェクト

  • 反復可能オブジェクト
  • String
  • Array
  • map
  • set
  • arguments
  • etc...

case1

  • for...ofの実行時はprototypeのSymbol(Symbol.iterator)が使われることになる。
const arry = ['a', 'b', 'c'];

for(let v of arry){
    console.log(v)
}

>>> a
>>> d
>>> c

スクリーンショット 2021-11-25 14.35.30.png

case2

  • 空の配列を用意するとundefinedが戻る。
  • for...ofはイテレータープロパティを用いるのでprototyepでメソッドを追加しても、戻り値には含まれない。

const arry = ['a', 'b', 'c'];

arry[4] = 'e'

for(let v of arry){
    console.log(v)
}

//イテレータープロパティを用いるのでprototyepでメソッドを追加しても、戻り値には含まれない。
Object.prototype.method = function(){}

//イテレーターを使用しているのでenumerableがfalseでも配列0番目の"a"も戻り値になる。   
Object.defineProperty(arry, 0, {
    enumerable: false
})

const b = Object.getOwnPropertyDescriptor(arry, 0);
console.log(b)

>>> {value: 'a', writable: true, enumerable: false, configurable: true}

//配列は0が出発点となるので、3はundifinedとなる。
>>> a [0]
>>> b [1]
>>> c [2]
>>> undefined [3]
>>> e [4]
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?