ES6 입문 튜 토리 얼 변수의 해체 할당 에 대한 상세 한 설명
6101 단어 es6해체 하 다값 을 부여 하 다
우 리 는 항상 많은 대상 과 배열 을 정의 한 후에 조직 적 으로 관련 정 보 를 추출 합 니 다.ES6 에 이러한 작업 을 간소화 할 수 있 는 새로운 특성 을 추가 했다.재 구성.재 구성 은 데이터 구 조 를 깨 고 더 작은 부분 으로 나 누 는 과정 이다.본 고 는 ES6 해체 대 가 를 상세 하 게 소개 할 것 이 며,다음은 더 이상 말 하지 않 겠 습 니 다.상세 한 소 개 를 살 펴 보 겠 습 니 다.
배열 의 해체 할당
기본 용법
ES6 는 일정한 패턴 에 따라 배열 과 대상 에서 값 을 추출 하고 변 수 를 할당 할 수 있 도록 하 는데 이 를 구조 라 고 한다.
ES6 이전에 변수 에 값 을 부여 하려 면 값 만 지정 할 수 있 습 니 다.다음 과 같 습 니 다.
let a = 1;
let b = 2
ES6 에 서 는 다음 과 같이 쓸 수 있 습 니 다.
let [a,b] = [1,2]
// a = 1, b = 2
주의해 야 할 것 은 등식 양쪽 의 값 이 대등 해 야 왼쪽 의 변 수 는 오른쪽 에 대응 하 는 값 을 부여 할 수 있 습 니 다.만약 에 왼쪽 의 값 을 기다 리 지 않 으 면 undefined 가 나타 날 것 입 니 다.다음 과 같이 쓰 십시오.
let [foo,[[bar],baz]] = [1,[[2],3]]
foo // 1
bar // 2
baz // 3
주의:좌우 양쪽 의 형식 만 반드시 대등 해 야 합 니 다.수량 이 대등 하지 않 아 도 됩 니 다.
let [a,b,c] = [1,2]
a = 1, b = 2, c = undefined
let [a,,c] = [1,2,3]
a = 1, c = 3
let [a, ...b] = [1,2,3]
a = 1, b = [2,3]
let [a] = []
let [b,a] = [1]
a = undefined
등호 왼쪽 은 배열 이지 만 등호 오른쪽 은 다른 값 이 므 로 오 류 를 보고 할 수 있 는 경우 도 있다.다음 과 같다.
let [a] = 1;
let [a] = false;
let [a] = NaN;
let [a] = undefined;
let [a] = null;
let [a] = {};
그러나 왼쪽 이 배열 이 고 오른쪽 이 문자열 이 라면 문자열 의 첫 번 째 아래 표 시 된 값 을 가 져 옵 니 다.
let [a] = '121321' a = '1'
let [a] = 'adgasg' a = 'a'
set 구조 에 대해 서도 배열 의 재 구성 대 가 를 사용 할 수 있 습 니 다.
let [x,y,z] = new Set([1,2,3])
x = 1, y = 2, z = 3
기본 값할당 을 해제 하면 기본 값 을 지정 할 수 있 습 니 다.
let [a = 3] = [] // a:3
let [a = 3,b] = [,4] // a:3 b:4
let [a = 3,b] = [5,4] // a:5 b:4
특별 하 다
let [a = 3] = [undefined] // a:3
let [a = 3] = [null] // a:null
Tips:es6 에 서 는 엄격 한 같은 연산 자 를 사용 합 니 다.구조 할당 에서 기본 값 이 필요 하 다 면 대응 등 값 이 undefined 일 때 기본 값 을 사용 합 니 다.그렇지 않 으 면 할당 을 사용 합 니 다.위 에서 null 이 엄격 하지 않 은 것 은 undefined+와 같 습 니 다.기본 값 의 할당 값 이 표현 식 이 라면 등호 오른쪽 에 있 는 할당 값 이 undefined 가 없 을 때 만 표현 식 의 값 을 가 져 옵 니 다.다음 과 같 습 니 다.
function demo(){
console.log('demo')
}
let [a = demo()] = [] // a: demo
let [a = demo()] = [1] // a : 1
대상 의 해체 할당배열 과 다른 점 은 배열 의 요 소 는 할당 요소 와 위치 가 일치 해 야 정확 한 할당 을 할 수 있 고 대상 의 재 구성 할당 값 은 등호 양쪽 의 변수 와 속성 동명 으로 정확 한 값 을 얻 을 수 있다 는 것 이다.그렇지 않 으 면 undefined 입 니 다.
let {a,b} = {a:'23',b:'3'}
let {a,b} = {b:'3',a:'23'}
// a: 23 b: 3
let {a,b} = {a:'3',c:'d'}
//a: 3 b: undefined
대상 의 해체 할당 은 기 존 대상 의 방법 을 새로운 변수 에 할당 합 니 다.다음 과 같 습 니 다.
let {sin,cos} = Math
// Math sin cos sin cos
let {log} = console
// log(2) === console.log(2)
등호 왼쪽 의 변수 명 이 등호 오른쪽 대상 의 속성 명 과 일치 하지 않 으 면 다음 과 같은 형식 으로 써 야 합 니 다.
let {a:b} = {a:'ss'} // b:ss
//a ,b
대상 의 해체 할당 값 은 똑 같이 끼 워 넣 을 수 있 습 니 다.다음 과 같 습 니 다.
:
let obj = {
p:[
'Hello',
{y:'world'}
]
}
let {p:[x,{y}]} = obj
// x: Hello, y: world
p , p :
let {p,:[x,{y}]} = obj
:
const a = {
loc: {
t :1,
b :{
c:1,
d:2
}
}
}
let {loc:{t,b:{c,d}}} = a
let {loc,loc:{t,b,b:{c,d}}} = a
끼 워 넣 기 할당
let o = {}, arr = []
({foo:o.prop,bar: arr[0]} = {foo:123,bar:true})
//o: 123, arr = [true]
재 구성 모드 가 포 함 된 대상 이 라면 하위 대상 이 있 는 부모 속성 이 존재 하지 않 으 면 다음 과 같이 잘못 보 고 됩 니 다.
let {foo:{bar}} = {baz:'baz'} //
기본 값
let {x = 3} = {}
// x: 3
let {x,y = 5} = {x : 1}
// x: 1, y: 5
let {x: y = 5} = {}
// y = 5
let {x: y = 5} = {x : 4}
// y = 4
let {x: y = 'hhhh'} = {}
//y = 'hhhh'
Tips: x ,y
let {x = 5} = {x: undefined}
// x: 5
let {x = 4} = {x: null}
// x: null
undefined
주의 점:1)코드 블록 이기 때문에 설명 한 변 수 를 할당 을 해제 하 는 데 사용 할 수 없습니다.
문자열 의 해체 할당
할당 대상 이 배열 이 라면 문자열 은 배열 의 형식 으로 나 뉘 어 할당 에 대응 합 니 다.
let [a,b] = 'ha'
// a = h , b = a
:
let {length:len} = '12121'
// len = 5
수치 와 불 값 의 해체 할당등호 오른쪽 에 숫자 나 불 값 이 있 으 면 대상 으로 바 꾸 거나 배열 과 대상 을 제외 하고 다른 값 은 대상 으로 바 뀌 며 null 과 undefined 는 제외 합 니 다.다음 과 같다.
let {t:s} = 123
let {t: s} = true
함수 매개 변수의 해체 값
function add([x,y]){
return x+y
}
add([3,5]) // 8
[[3,5],[6,7]].map(([a,b]) => a + b)
//8 , 13
function m({x=3, y=4} = {}){
return [x,y]
}
m({x:33,y:8}) // [33,8]
m({x:32}) // [32,4]
m({}) // [3,4]
m() // [3,4]
function m({x,y} = {x=0,y=0}){
return [x,y]
}
m({x:33,y:8}) // [33,8]
// x:0, y:0 33 8
m({x:32}) // [32,undefined]
// , x y
// y y , undefined
m({}) // [undefined,undefined]
// x,y , undefined
m() // [0,0]
// , 0
기타괄호 를 사용 할 수 없 는 경우
할당 용도 재 구성
이상 은 이 글 의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가 치 를 가지 기 를 바 랍 니 다.여러분 의 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JavaScript로 카드 놀이를 넘기는 애니메이션을 만들려고했습니다.카드를 넘기는 애니메이션을 만들어 보았습니다. 폴더 구성은 다음과 같습니다. 코드는 다음과 같습니다. card_turning.html 다음은 JavaScript 코드입니다. cardTurning.js 결과는, 이런 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.