`var {…} =…`문에서 중괄호는 무엇을합니까?
이것이 Mozilla 특정 JS 구문인지 확실하지 않지만 예를 들어 애드온 SDK 문서 에서와 같이 이러한 방식으로 선언되는 변수를 종종 발견했습니다 .
var { Hotkey } = require("sdk/hotkeys");
그리고 다양한 크롬 자바 스크립트에서 ( let문이 대신 사용됩니다 var),
let { classes: Cc, interfaces: Ci, results: Cr, utils: Cu } = Components;
매우 혼란 스럽지만 MDN 에서도 두 구문에 대한 문서를 찾을 수 없습니다 .
둘 다 JavaScript 1.7 기능입니다. 첫 번째는 블록 수준 변수입니다 .
let변수를 선언하고 변수가 사용되는 블록, 문 또는 표현식으로 범위를 제한 할 수 있습니다. 이것은var변수를 전역 적으로 정의하거나 블록 범위에 관계없이 전체 함수에 대해 로컬로 정의하는 키워드 와는 다릅니다 .
두 번째는 Destructuring 이라고합니다 .
Destructuring 할당을 사용하면 배열 및 개체 리터럴의 구성을 미러링하는 구문을 사용하여 배열 또는 개체에서 데이터를 추출 할 수 있습니다.
...
디스트 럭처링 할당으로 할 수있는 특히 유용한 작업 중 하나는 다음 예제로 가득 찬 섹션에서 볼 수 있듯이 여러 가지 흥미로운 작업을 수행 할 수 있지만 단일 문으로 전체 구조를 읽는 것입니다.
Python에 익숙한 사용자에게는 다음 구문과 유사합니다.
>>> a, (b, c) = (1, (2, 3))
>>> a, b, c
(1, 2, 3)
첫 번째 코드 청크는 다음의 약칭입니다.
var {Hotkey: Hotkey} = require("sdk/hotkeys");
// Or
var Hotkey = require("sdk/hotkeys").Hotkey;
두 번째 코드 청크를 다음과 같이 다시 작성할 수 있습니다.
let Cc = Components.classes;
let Ci = Components.interfaces;
let Cr = Components.results;
let Cu = Components.utils;
당신이보고있는 것은 비 구조화 과제입니다. Haskell과 같은 패턴 매칭 의 한 형태입니다 .
비 구조화 할당을 사용하면 객체 및 배열에서 값을 추출하고 객체 및 배열 리터럴 구문을 사용하여 새로 선언 된 변수에 할당 할 수 있습니다. 이것은 코드를 훨씬 더 간결하게 만듭니다.
예를 들면 :
var ascii = {
a: 97,
b: 98,
c: 99
};
var {a, b, c} = ascii;
위의 코드는 다음과 같습니다.
var ascii = {
a: 97,
b: 98,
c: 99
};
var a = ascii.a;
var b = ascii.b;
var c = ascii.c;
배열의 경우 :
var ascii = [97, 98, 99];
var [a, b, c] = ascii;
이것은 다음과 동일합니다.
var ascii = [97, 98, 99];
var a = ascii[0];
var b = ascii[1];
var c = ascii[2];
다음과 같이 객체 속성을 추출하고 이름을 바꿀 수도 있습니다.
var ascii = {
a: 97,
b: 98,
c: 99
};
var {a: A, b: B, c: C} = ascii;
이것은 다음과 동일합니다.
var ascii = {
a: 97,
b: 98,
c: 99
};
var A = ascii.a;
var B = ascii.b;
var C = ascii.c;
그게 전부입니다.
이것은 Javascript의 파괴적인 할당이며 ES2015 표준의 일부입니다. 객체의 배열 또는 속성에서 고유 한 변수로 값을 압축 해제하거나 추출합니다. 예 : 배열 분해
var foo = ["one", "two", "three"];
//without destructuring
var one = foo[0];
var two = foo[1];
var three = foo[2];
// 비 구조화 var [one, two, three] = foo
예 : 객체 분해
var o = {p : 42, q : true}; var {p, q} = o;
console.log (p); // 42 console.log (q); // 진실
// 새 변수 이름 할당 var {p : foo, q : bar} = o;
console.log(foo); // 42 console.log(bar); // true
There is documentation for the let statement on MDN: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Statements/let
let is similar to var in that it limits the scope of the declared variable. It allows you to declare a variable inside a if(){} block (or some other block) and have that variable only "visible" inside that block (JavaScript, until now, has function scope and not block scope as most other languages). So the let is basically a "fix" for something many people have issues with. Note that tihs is a JavaScript 1.7 feature.
Haven't found anything on {Foo}.
참고URL : https://stackoverflow.com/questions/15290981/what-does-curly-brackets-in-the-var-statements-do
'IT박스' 카테고리의 다른 글
| Visual Studio SP1 오류 : silverlight_sdk.msi를 사용할 수 없습니다. (0) | 2020.08.10 |
|---|---|
| 함수를 제외한 모든 변수 제거 (0) | 2020.08.10 |
| XSD : xs : integer와 xs : int의 차이점은 무엇입니까? (0) | 2020.08.10 |
| 이 컨텍스트에서는 요청을 사용할 수 없습니다. (0) | 2020.08.10 |
| .nuget 폴더를 버전 관리에 추가해야합니까? (0) | 2020.08.10 |