JSFiddle - React, Tailwind, and code Playground
발표
by uiwwnw
HTML
<script>
var a = 0;
</script>
JavaScript
// for of
// regacy
/*
var list1 = [1, 2, 3];
for (var i = 0; i < list1.length; i++) console.log(list1[i]);
// es6
const list2 = new Array(1, 2, 3);
for (const i of list2) {
console.log(i)
};
const set = new Set([1, 2, 3]);
const map = new Map([
[1, 3],
[2, 4],
[43, 2]
]);
console.log('set');
for (const i of set) {
console.log(i)
}
const iter = list1[Symbol.iterator]();
*/
// for of 는 어레이기 때문에 작동하는게 아니라
// 어레이가 이터러블이기 떄문에 작동한다.
// for of는 이터러블을 순회한다.
// 이터레이터/ 이터러블 프로토콜
//이터러블이란
// [Symbol.interator]를 갖는다
// 매소드 실행 시 이터레이터를 반환한다.
// 이터레이터란
// 넥스트 매소드를 소유하며
// 실행시 value done을 리턴한다.
// 웰폼드(well-formed) 이터러블이란
// 이터레이터 실행 시 자기자신을 리턴한다.
/* const list = [1, 2, 3];
const iter1 = () => {
let i = 0;
return {
next() {
i++;
return i > 5 ? {
done: true
} : {
done: false,
value: i
}
},
[Symbol.iterator]() {
return this;
}
}
}
const eeee = list[Symbol.iterator]();
const eeeee = iter1();
console.log(eeeee.next(), '포문 밖')
for(const e of eeeee) {
console.log(e, '포문 안');
}
console.log(eeeee.next());
console.log(eeeee.next());
console.log(eeeee.next());
console.log(eeeee.next());
console.log(eeeee.next());
console.log(eeeee.next()); */
/* const iterable1 = {
[Symbol.iterator]() {
let i = 0;
return {
next() {
return i > 3 ? {
done: true
} : {
done: false,
value: i++
};
},
[Symbol.iterator]() {
return this;
}
}
}
}
const iter1 = iterable1()[Symbol.iterator](); */
/* console.log(iter1.next());
console.log(iter1.next());
for(const b of iter1) {
console.log(b)
}
console.log(iter1.next());
console.log(iter1.next());
console.log(a)
*/
let i = -1;
let lll = [];
while (++i < 5) {
lll.push(i)
console.log('while')
}
for(const a of lll) {
console.log(a, 'while')
}
const gen = function*() {
let i = -1;
while (++i < 5) {
...