ES6 생성기의 결과를 배열 변수에 할당하려고한다고 가정 해 봅시다. 여기 b
ES6 생성기에서 배열 만들기
function* gen() {
for(let i = 0; i < 3; i++) {
yield i;
}
}
let [...b] = gen();
console.log(b); // [0, 1, 2]
[0, 1, 2]
할당한다. 왜이게 효과가 있니?
ES6 생성기의 결과를 배열 변수에 할당하려고한다고 가정 해 봅시다. 여기 b
ES6 생성기에서 배열 만들기
function* gen() {
for(let i = 0; i < 3; i++) {
yield i;
}
}
let [...b] = gen();
console.log(b); // [0, 1, 2]
[0, 1, 2]
할당한다. 왜이게 효과가 있니?
글쎄, 내가 대답을 찾은 것 같아 this post. 여기서 연산자 ...
은 나머지 연산자입니다. 배열을 소멸시키기 위해 사용되면, 소멸되는 배열의 모든 할당되지 않은 요소를 다른 배열에 할당합니다. 나머지 연산자는 반드시 소멸 된 값을받는 변수 목록의 마지막 항목에서 사용해야합니다. 예를 들어 b
이후 해당
let a = [1, 2, 3, 4, 5];
let [first, second, ...remainder] = a;
console.log(first); // 1
console.log(second); // 2
console.log(remainder); // [3, 4, 5]
ES6이 생성기를 실행하고 결과를 =
의 오른쪽에있는 배열로 바꿉니다.
이 답변은 발전기와의 상호 작용을 설명하지 않습니다. – jfriend00
[여기] (http://exploringjs.com/es6/ch_destructuring.html#sec_destructuring-algorithm)은 구조 알고리즘에 대한 심층적 인 토론입니다. – ccprog
['... ...는 연산자가 아닙니다!] (https :// /stackoverflow.com/questions/37151966/what-is-spreadelement-in-ecmascript-documentation-is-it-the-same-as-spread-oper/37152508#37152508) –
생성자가 호출 될 때 iterator을 반환합니다. 우리는 할 수있는 for … of
루프 반복자를 통해 예를 들어 루프 :
for (const item of gen()) {
console.log(item);
}
단지 발전기의 각 항목을 통해 갈 것이다 :
: 우리는 spread syntax를 호출 할 경우0
1
2
같은 일이 발생 는
const res = [...gen()];
res
은 다음과 같다 :
[0, 1, 2]
예에서는 소멸 할당을 사용하고 있습니다. 꺽쇠 괄호 구문을 사용한 소멸은 반복 가능을 호출하여 값을 가져옵니다 (배열과 동일한 원리). 당신이 rest syntax를 사용하고 있기 때문에
const [a, b] = gen();
// a: 0, b: 1
, 당신은 기본적으로 말을하는지 : 예 나에게 반복자에 남아있는 모든 값을주고, 변수 b
에 저장 :
let [...b] = gen();
// b: [0, 1, 2]
const [a, b, ...c] = 'hello';
// a: 'h', b: 'e', c: 'llo'
가 개인적으로, 나는이 (가)에 대한 추론하기 위하여 더 쉽게 다음 찾기 :
이는 반복 가능한 작동 0const res = [...gen()];
마지막 예에 동의합니다. 즉, 또는 'const res = Array.from (gen())'* 두 가지 모두 * 명시 적으로 * 생성자에서 배열을 생성합니다. 하나의 버전은 배열 대괄호 (array bracket)를 사용하여 버전을 만들고, 다른 버전은 문자 그대로 "Array'에서"create "라는 문장을 철자로 작성합니다. 둘 다 상호 작용이 적기 때문에 둘 다 쉽게 이해할 수 있습니다. 즉, 소멸 할당과 iterables와 상호 작용하는 방법은 둘 다 존재하지 않습니다. –
['... '는 연산자가 아닙니다!] (https://stackoverflow.com/questions/37151966/what-is-spreadelement-in-ecmascript-documentation-is-it-the-same-as-spread- oper/37152508 # 37152508) –
감사합니다. Felix, 전 스프레드에 맞게 만들었지 만, 쉬지 말고 엉망으로 만들었습니다.) – nils
보기 ... 미친. * 내 첫 시도는'const b = Array.from (gen)'과 같았습니다. 생성자가 반복 가능하고'Array.from'가 반복 가능하므로 가정해야합니다 * 가정해야합니다. 편집 : 좋아, 닫기 :'const b = Array.from (gen())'실제로 작동하지 않습니다. –