그룹과 대상의 해체 값

2764 단어 es6
정의: 배열과 객체에서 값을 추출하여 변수에 값을 지정합니다. 이를 Destructuring이라고 합니다.

1. 수조의 해체 값

let [foo, [[bar], baz]] = [1, [[2], 3]];
foo // 1
bar // 2
baz // 3

let [x, y, ...z] = ['a'];
x // "a"
y // undefined
z // []

/**************** , , ******************/
let [x, y] = [1, 2, 3];
x // 1
y // 2

let [a, [b], d] = [1, [2, 3], 4];
a // 1
b // 2
d // 4

1. 해체에 성공하지 못하면 변수의 값은 undefined과 같다.2、 등호의 오른쪽은 수조가 아니다(또는 엄밀히 말하면 범람할 수 있는 구조가 아니다). 그러면 잘못 보고될 것이다.
3. 해구부치는 기본값을 지정할 수 있다(<1>엄격 상등 연산자(===). 한 위치에 값이 있는지 판단할 수 있기 때문에 한 그룹의 구성원이 엄격하게undefined와 같아야만 기본값이 효력이 발생한다. <2> 기본값은 하나의 표현식이다. 그러면 이 표현식은 타성적으로 값을 구하는 것이다. 즉, 사용할 때만 값을 구하는 것이다.<3> 기본값은 해체 값의 다른 변수를 인용할 수 있지만, 이 변수는 이미 성명해야 합니다)
//  
let [foo] = 1;
let [foo] = false;
let [foo] = NaN;
let [foo] = undefined;
let [foo] = null;
let [foo] = {};
// 
let [x = 1] = [undefined];
x // 1

let [x = 1] = [null];
x // null


// 
function f() {
  console.log('aaa');
}

let [x = f()] = [1];   // x=1

2. 대상의 해체 할당값


1. 수조 해체 값과의 차이
수조의 원소는 순서대로 배열되고 변수의 수치는 그 위치에 의해 결정된다.대상의 속성은 순서가 없고 변수는 속성과 동명이어야만 정확한 값을 얻을 수 있다.
let { bar, foo } = { foo: 'aaa', bar: 'bbb' };
foo // "aaa"
bar // "bbb"

let { baz } = { foo: 'aaa', bar: 'bbb' };
baz // undefined

2. 대상의 해체 부치는 기존 대상의 방법을 어떤 변수에 쉽게 부칠 수 있다
//  
let { log, sin, cos } = Math;

//  
const { log } = console;
log('hello') // hello

3. 대상의 해체 부수값의 내부 메커니즘은 먼저 동명 속성을 찾은 다음에 대응하는 변수를 부여한다.진정으로 가치가 부여된 것은 후자이지 전자가 아니다.
let { foo: baz } = { foo: 'aaa', bar: 'bbb' };
baz // "aaa"
foo // error: foo is not defined

//foo ,baz 。 baz, foo。

4. 해체 모드가 중첩된 대상이고 하위 대상이 있는 부모 속성이 존재하지 않으면 오류가 발생합니다.
//  
let {foo: {bar}} = {baz: 'baz'};

// foo , 。 bar , 。 , foo undefined, 

기본값:
1. 배열과 마찬가지로 기본값이 적용되는 조건은 대상의 속성 값이 엄격하다undefined1>명시된 변수를 할당 해제에 사용하려면 매우 조심해야 한다
//  
let x;
{x} = {x: 1};
// SyntaxError: syntax error




//  
let x;
({x} = {x: 1});

2、oh may Gad!!문자열도 값을 해체할 수 있다
const [a, b, c, d, e] = 'hello';
a // "h"
b // "e"
c // "l"
d // "l"
e // "o"

3. 수치와 부울 값의 해체 값(먼저 대상으로 전환)은 undefinednull이 대상으로 전환할 수 없기 때문에 그것들에 대해 해체 값을 하면 모두 틀릴 수 있다.
let { prop: x } = undefined; // TypeError
let { prop: y } = null; // TypeError

4. 함수 매개 변수의 해체 값
6. 괄호 문제.공식 문서를 보는 것을 권장합니다.

좋은 웹페이지 즐겨찾기