자 바스 크 립 트 ES6 문법 전개 및 할당 해제 문법
문법 (Spread syntax) 을 펼 치면 함수 호출 이나 배열 구 조 를 구성 할 때 배열 식 이나 string 을 문법 적 으로 펼 칠 수 있 습 니 다.또한 글자 의 대상 을 구성 할 때 대상 표현 식 버튼 값 을 펼 칠 수 있 습 니 다.
함수 매개 변수 전개
function fun(a, b, c) {
console.log(a, b, c)
}
let args = [1, 2, 3]
fun(...args)
// 1 2 3
function fun1(a, b, c, d) {
console.log(a, b, c, d)
}
let args = [2, 3]
fun1(1, ...args, 4)
// 1 2 3 4
배열 사용 전개 문법
let array1 = [1, 2, 3]
let array2 = ['hello', ...array1]
console.log(array2) // ["hello", 1, 2, 3]
배열 의 깊 은 복사
let array1 = [1, 2, 3]
let array2 = array1
let array3 = [...array1]
array2.push(4);
array3.push(5)
console.log(array1) // [1, 2, 3, 4]
console.log(array2) // [1, 2, 3, 4]
console.log(array3) // [1, 2, 3, 5]
대상 전개 문법
let obj1 = { foo: 'bar', x: 42 }
let obj2 = { foo: 'baz', y: 13 }
let clonedObj = { ...obj1 } // : { foo: "bar", x: 42 }
let mergedObj = { ...obj1, ...obj2 } // : { foo: "baz", x: 42, y: 13 }
넓히다
남 은 문법 (남 은 매개 변수):
나머지 문법 (Rest syntax) 은 전개 문법 과 똑 같 아 보 입 니 다. 다른 점 은 나머지 매개 변 수 는 배열 과 대상 을 재 구성 하 는 데 사 용 됩 니 다.특정한 의미 에서 볼 때 잉여 문법 은 전개 문법 과 반대 된다. 전개 문법 은 배열 을 그 중의 각 요소 로 전개 하고 나머지 문법 은 여러 요 소 를 수집 하여 '응집' 을 하나의 요소 로 한다.
function fun(a, b, ...theArgs) {
console.log(a, b, theArgs)
}
fun(1, 2, 3, 4, 5) // 1 2 [3, 4, 5]
나머지 매개 변수 와
arguments
대상 간 의 차 이 는 주로 세 가지 가 있다.arguments
대상 은 함수 에 전 달 된 모든 실 삼 을 포함한다.arguments
대상 은 진정한 배열 이 아니 라 나머지 매개 변 수 는 진정한 Array
사례 이다. 즉, 그 위 에 모든 배열 방법 을 직접 사용 할 수 있다 는 것 이다. 예 를 들 어 sort
, map
, forEach
또는 pop
.arguments
대상 은 추가 적 인 속성 (예 를 들 어 callee
속성 도 있다.할당 해제
할당 을 해제 하면 속성 이나 값 을 대상 이나 배열 에서 꺼 내 다른 변수 에 할당 할 수 있 습 니 다.
재 구성 배열 은 수치 배열 의 요 소 를 변수 데이터 와 대응 시 키 고 배열 의 위치 가 일치 하 는 값 을 등호 왼쪽 위치 와 같은 변수 에 할당 하 는 것 입 니 다.
재 구성 대상 은 같은 키 의 대상 을 상대 적 으로 재 구성 할당 하 는 것 이다.
let a, b, c
// ( ) ↓
let [a, b] = [1, 2] //
[a, b] = [1, 2] //
console.log(a, b) // 1 2
[a, b] = [1, 2, 3, 4]
console.log(a, b) // 1 2
[a, b, ...c] = [1, 2, 3, 4, 5]
console.log(a, b, c); // 1 2 [1, 2, 3, 4, 5]
// ( ) ↓
let {a, b} = {a: 10, b: 20} //
console.log(a, b); // 10 20
({a, b} = {a: 10, b: 20}) //
console.log(a, b); // 10 20
({a, b, ...c} = {a: 10, b: 20, c: 30, d: 40, e: 50}) // Rest ( )
console.log(a, b, c) // 10 20 {c: 30, d: 40, e: 50}
주의:
할당 문 주위 의 괄호
( ... )
는 대상 이 할당 을 설명 하지 않 을 때 필수 입 니 다.{a, b} = {a: 10, b: 20}
효과 적 인 독립 문법 이 아니 라 왼쪽 {a, b}
은 대상 글자 의 양 이 아니 라 하나의 조각 으로 여 겨 지기 때문이다.그러나
({a, b} = {a: 1, b: 2})
는 유효 하 다. 마치 var {a, b} = {a: 1, b: 2}
와 같다.주의해 야 할 것 은
( ... )
표현 식 전에 분점 이 있어 야 합 니 다. 그렇지 않 으 면 이전 줄 의 함수 로 실 행 될 수 있 습 니 다.let a, b
console.log('hello')
({a, b} = {a:1, b:2})
console.log(a, b)
// Uncaught TypeError: console.log(...) is not a function
다음은 부정 확 한 할당 방법 입 니 다.
// ↓
let c = {a: 1, b: true}
let a, b
{a, b} = c
// Uncaught SyntaxError: Unexpected token '='
// ↓
let c = {a: 1, b: true}
let {a, b} = c
//
let c = {a: 1, b: true}
let a, b
({a, b} = c)
( ... )
표현 식 이 성명 이 없 을 때 값 을 부여 하면 분점 이 있 든 없 든 영향 을 주지 않 습 니 다.재 구성 할당 에서 배열 에서 값 을
undefined
로 추출 하 는 것 을 방지 하기 위해 기본 값 을 제공 합 니 다. 다시 말 하면 변수 수량 이 배열 수량 보다 적 을 때 불필요 한 변수 에 기본 값 을 부여 하 는 것 을 방지 하기 위해 서 입 니 다.let a, b
[a, b] = [1]
console.log(a, b) // 1 undefined
[a, b=2] = [1]
console.log(a, b) // 1 2
let {a, b = 5} = {a: 1};
console.log(a, b); // 1 5
그 밖 에 구조 할당 문법 을 이용 하여 변 수 를 더욱 간편 하 게 교환 할 수 있 습 니 다.
let a=1, b=2
console.log(a, b) // 1 2
[a, b] = [b, a]
console.log(a, b) // 2 1
부분 값 무시
let a, b
[a,, b] = [1, 2, 3]
console.log(a, b) // 1 3
물론 모든 값 을 무시 해도 되 지만 의미 가 없 는 것 같 습 니 다.
[,,] = [1, 2, 3]
재 구성 대상 이 새로운 변수 이름 에 값 을 부여 합 니 다.
let c = {a: 1, b: true};
let {a: foo, b: bar} = c;
console.log(foo, bar); // 1 true
재 구성 대상 은 새로운 변수 이름 에 값 을 부여 하고 기본 값 을 제공 합 니 다.
var {a:foo, b:bar = 5} = {a: 3};
console.log(foo, bar); // 3 5
넓히다
포 함 된 대상 과 배열 을 재 구성 합 니 다.
const metadata = {
title: 'Scratchpad',
translations: [
{
locale: 'de',
localization_tags: [],
last_edit: '2014-04-14T08:43:37',
url: '/de/docs/Tools/Scratchpad',
title: 'JavaScript-Umgebung'
}
],
url: '/en-US/docs/Tools/Scratchpad'
};
let {
title: englishTitle, // rename
translations: [
{
title: localeTitle, // rename
},
],
} = metadata;
console.log(englishTitle); // "Scratchpad"
console.log(localeTitle); // "JavaScript-Umgebung"
For of 교체 와 재 구성
let people = [
{
name: 'Mike Smith',
family: {
mother: 'Jane Smith',
father: 'Harry Smith',
sister: 'Samantha Smith'
},
age: 35
},
{
name: 'Tom Jones',
family: {
mother: 'Norah Jones',
father: 'Richard Jones',
brother: 'Howard Jones'
},
age: 25
}
];
for (var {name: n, family: {father: f}} of people) {
console.log('Name: ' + n + ', Father: ' + f);
}
// "Name: Mike Smith, Father: Harry Smith"
// "Name: Tom Jones, Father: Richard Jones"
함수 실 삼 대상 에서 데 이 터 를 추출 하 다.
function userId({id}) {
return id;
}
function whois({displayName: displayName, fullName: {firstName: name}}){
console.log(displayName + " is " + name);
}
let user = {
id: 42,
displayName: "jdoe",
fullName: {
firstName: "John",
lastName: "Doe"
}
};
console.log("userId: " + userId(user)); // "userId: 42"
whois(user); // "jdoe is John"
ECMAScript 2015 부터 대상 초기 화 문법 부터 속성 명 계산 을 지원 합 니 다.[] 에 표현 식 을 넣 을 수 있 습 니 다. 결 과 를 속성 명 으로 계산 할 수 있 습 니 다.속성 명 을 계산 하면 재 구성 할 수 있 습 니 다.
let key = "z";
let {[key]: foo} = {z: "bar"};
console.log(foo); // "bar"
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자 바스 크 립 트 ES6 문법 전개 및 할당 해제 문법문법 (Spread syntax) 을 펼 치면 함수 호출 이나 배열 구 조 를 구성 할 때 배열 식 이나 string 을 문법 적 으로 펼 칠 수 있 습 니 다.또한 글자 의 대상 을 구성 할 때 대상 표현 식 버튼...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.