Baseline Widely available
СинÑакÑÐ¸Ñ Ð´ÐµÑÑÑÑкÑÑÑиÑÑÑÑего пÑиÑÐ²Ð°Ð¸Ð²Ð°Ð½Ð¸Ñ Ð² вÑÑажениÑÑ JavaScript позволÑÐµÑ Ð¸Ð·Ð²Ð»ÐµÐºÐ°ÑÑ Ð´Ð°Ð½Ð½Ñе из маÑÑивов или обÑекÑов пÑи помоÑи ÑинÑакÑиÑа, подобного обÑÑÐ²Ð»ÐµÐ½Ð¸Ñ Ð¼Ð°ÑÑива или лиÑеÑалов в обÑекÑе.
СинÑакÑиÑvar a, b, rest;
[a, b] = [1, 2];
console.log(a); // 1
console.log(b); // 2
[a, b, ...rest] = [1, 2, 3, 4, 5];
console.log(a); // 1
console.log(b); // 2
console.log(rest); // [3, 4, 5]
({ a, b } = { a: 1, b: 2 });
console.log(a); // 1
console.log(b); // 2
({ a, b, ...rest } = { a: 1, b: 2, c: 3, d: 4 });
console.log(a); // 1
console.log(b); // 2
console.log(rest); // { c:3, d:4 }
ÐпиÑание
ÐÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¾Ð±ÑÑÐ²Ð»ÐµÐ½Ð¸Ñ Ð¾Ð±ÑекÑов или маÑÑивов пÑедоÑÑавлÑÑÑ Ð¿ÑоÑÑой ÑпоÑоб ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿Ð°ÐºÐµÑа одноÑоднÑÑ Ð´Ð°Ð½Ð½ÑÑ . ÐÑи Ñоздании Ñакого пакеÑа Ð²Ñ Ð¿Ð¾Ð»ÑÑаеÑе возможноÑÑÑ Ð¸ÑполÑзоваÑÑ ÐµÐ³Ð¾ лÑбÑм доÑÑÑпнÑм обÑазом. Также Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе возвÑаÑаÑÑ ÐµÐ³Ð¾ в ÑÑнкÑиÑÑ .
Ðдной из клÑÑевÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑей иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´ÐµÑÑÑÑкÑÑÑиÑÑÑÑего пÑиÑÐ²Ð°Ð¸Ð²Ð°Ð½Ð¸Ñ ÑвлÑеÑÑÑ ÑÑение ÑÑÑÑкÑÑÑÑ Ð´Ð°Ð½Ð½ÑÑ Ð¾Ð´Ð½Ð¸Ð¼ опеÑаÑоÑом, Ñ Ð¾ÑÑ Ð¿Ð¾Ð¼Ð¸Ð¼Ð¾ ÑÑого Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе найÑи множеÑÑво дÑÑÐ³Ð¸Ñ Ð¿Ñименений в пÑиведÑннÑÑ Ð½Ð¸Ð¶Ðµ пÑимеÑÐ°Ñ .
ÐÐ°Ð½Ð½Ð°Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð¿Ð¾Ð´Ð¾Ð±Ð½Ð° Ñаковой, пÑиÑÑÑÑÑвÑÑÑей в ÑзÑÐºÐ°Ñ Perl и Python.
Ð Ð°Ð·Ð±Ð¾Ñ Ð¼Ð°ÑÑивов ÐÑоÑÑой пÑимеÑvar foo = ["one", "two", "three"];
// без деÑÑÑÑкÑÑÑиÑованиÑ
var one = foo[0];
var two = foo[1];
var three = foo[2];
// Ñ Ð´ÐµÑÑÑÑкÑÑÑиÑованием
var [one, two, three] = foo;
Ðбмен знаÑений пеÑеменнÑÑ
ÐоÑле вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑÑагменÑа кода, знаÑение b бÑÐ´ÐµÑ 1, a бÑÐ´ÐµÑ 3. Ðез деÑÑÑÑкÑÑÑиÑÑÑÑего пÑиÑваиваниÑ, Ð´Ð»Ñ Ð¾Ð±Ð¼ÐµÐ½Ð° знаÑений ÑÑебÑеÑÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑÐ½Ð°Ñ Ð²ÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¿ÐµÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ (или ÑÑо-Ñо наподобие XOR-обмена).
var a = 1;
var b = 3;
[a, b] = [b, a];
ÐозвÑÐ°Ñ Ð½ÐµÑколÑкиÑ
знаÑений
ÐлагодаÑÑ Ð´ÐµÑÑÑÑкÑÑÑиÑÑÑÑÐµÐ¼Ñ Ð¿ÑиÑваиваниÑ, ÑÑнкÑии могÑÑ Ð²Ð¾Ð·Ð²ÑаÑаÑÑ Ð½ÐµÑколÑко знаÑений. ХоÑÑ Ð²Ñегда можно бÑло возвÑаÑаÑÑ Ð¼Ð°ÑÑÐ¸Ð²Ñ Ð² ÑÑнкÑиÑÑ , оно пÑедоÑÑавлÑÐµÑ Ð³Ð¸Ð±ÐºÐ¾ÑÑÑ:
function f() {
return [1, 2];
}
Ðак Ð²Ñ Ð²Ð¸Ð´Ð¸Ñе, возвÑаÑаемÑе ÑезÑлÑÑаÑÑ Ð¸Ð¼ÐµÑÑ Ð²Ð¸Ð´ маÑÑива, знаÑÐµÐ½Ð¸Ñ ÐºÐ¾ÑоÑого заклÑÑÐµÐ½Ñ Ð² квадÑаÑнÑе Ñкобки. ÐÑ Ð¼Ð¾Ð¶ÐµÑе возвÑаÑаÑÑ Ð½ÐµÐ¾Ð³ÑаниÑенное колиÑеÑÑво ÑезÑлÑÑаÑов Ñаким обÑазом. Ð ÑледÑÑÑем пÑимеÑе, f()
возвÑаÑÐ°ÐµÑ [1, 2]
как ÑезÑлÑÑаÑ:
var a, b;
[a, b] = f();
console.log("A is " + a + " B is " + b);
ÐпеÑаÑÐ¾Ñ [a, b] = f()
пÑиÑÐ²Ð°Ð¸Ð²Ð°ÐµÑ ÑезÑлÑÑаÑÑ ÑÑнкÑии пеÑеменнÑм в квадÑаÑнÑÑ
ÑкобкаÑ
: a бÑÐ´ÐµÑ Ð¿ÑиÑвоено 1, b бÑÐ´ÐµÑ Ð¿ÑиÑвоено 2.
ÐÑ Ñакже можеÑе иÑполÑзоваÑÑ ÑезÑлÑÑÐ°Ñ ÑÑнкÑии в виде маÑÑива:
var a = f();
console.log("A is " + a);
Рданном ÑлÑÑае a бÑÐ´ÐµÑ Ð¼Ð°ÑÑивом Ñ ÑлеменÑами 1 и 2.
ÐгноÑиÑование некоÑоÑÑÑ Ð·Ð½Ð°ÑенийÐÑ Ñакже можеÑе пÑоигноÑиÑоваÑÑ Ð½Ðµ нÑжнÑе знаÑениÑ:
function f() {
return [1, 2, 3];
}
var [a, , b] = f();
console.log("A is " + a + " B is " + b);
ÐоÑле вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð´Ð°, a бÑÐ´ÐµÑ 1, b бÑÐ´ÐµÑ 3. ÐнаÑение 2 игноÑиÑÑеÑÑÑ. Таким же обÑазом Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе игноÑиÑоваÑÑ Ð»ÑбÑе (или вÑе) знаÑениÑ. ÐапÑимеÑ:
ÐолÑÑение знаÑений из ÑезÑлÑÑаÑа ÑегÑлÑÑного вÑÑажениÑÐогда меÑод exec()
ÑегÑлÑÑного вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð½Ð°Ñ
Ð¾Ð´Ð¸Ñ Ñовпадение, он возвÑаÑÐ°ÐµÑ Ð¼Ð°ÑÑив, ÑодеÑжаÑий пеÑвÑй ÑовпадаÑÑий ÑÑÐ°Ð³Ð¼ÐµÐ½Ñ ÑÑÑоки и далее гÑÑппÑ, опÑеделÑннÑе в ÑегÑлÑÑном вÑÑажении. ÐеÑÑÑÑкÑÑÑиÑÑÑÑее пÑиÑваивание ÑпÑоÑÐ°ÐµÑ Ð¿Ð¾Ð»ÑÑение даннÑÑ
из ÑÑиÑ
гÑÑпп, игноÑиÑÑÑ Ð¿ÐµÑвÑй ÑÑагменÑ:
var url = "https://developer.mozilla.org/en-US/Web/JavaScript";
var parsedURL = /^(\w+)\:\/\/([^\/]+)\/(.*)$/.exec(url);
var [, protocol, fullhost, fullpath] = parsedURL;
console.log(protocol); // вÑÐ²ÐµÐ´ÐµÑ "https"
Ð Ð°Ð·Ð±Ð¾Ñ Ð¾Ð±ÑекÑов ÐÑоÑÑой пÑимеÑ
var o = { p: 42, q: true };
var { p, q } = o;
console.log(p); // 42
console.log(q); // true
// ÐбÑÑвление новÑÑ
пеÑеменнÑÑ
var { p: foo, q: bar } = o;
console.log(foo); // 42
console.log(bar); // true
ÐагÑÑзка модÑлей
ÐеÑÑÑÑкÑÑÑиÑÑÑÑее пÑиÑваивание Ð¿Ð¾Ð¼Ð¾Ð³Ð°ÐµÑ Ð·Ð°Ð³ÑÑжаÑÑ ÑпеÑиÑиÑнÑе набоÑÑ Ð¼Ð¾Ð´Ñлей, как в Add-on SDK:
const { Loader, main } = require("toolkit/loader");
ÐложеннÑй обÑÐµÐºÑ Ð¸ ÑÐ°Ð·Ð±Ð¾Ñ Ð¼Ð°ÑÑива
var metadata = {
title: "Scratchpad",
translations: [
{
locale: "de",
localization_tags: [],
last_edit: "2014-04-14T08:43:37",
url: "/de/docs/Tools/Scratchpad",
title: "JavaScript-Umgebung",
},
],
url: "/ru/docs/Tools/Scratchpad",
};
var {
title: englishTitle,
translations: [{ title: localeTitle }],
} = metadata;
console.log(englishTitle); // "Scratchpad"
console.log(localeTitle); // "JavaScript-Umgebung"
ÐеÑÑÑÑкÑÑÑиÑование во вÑÐµÐ¼Ñ Ð¾Ð±Ñ
ода
var 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, fullName: { firstName: name } }) {
console.log(displayName + " is " + name);
}
var user = {
id: 42,
displayName: "jdoe",
fullName: {
firstName: "John",
lastName: "Doe",
},
};
console.log("userId: " + userId(user)); // "userId: 42"
whois(user); // "jdoe is John"
РпÑиведÑнном пÑимеÑе извлекаÑÑÑÑ Ð¿Ð¾Ð»Ñ id
, displayName
и firstName
из обÑекÑа полÑзоваÑелÑ.
ÐÑÑиÑлÑемÑе имена ÑвойÑÑв, напÑимеÑ, лиÑеÑÐ°Ð»Ñ Ð¾Ð±ÑекÑов, могÑÑ Ð¸ÑполÑзоваÑÑÑÑ Ð¿Ñи деÑÑÑÑкÑÑÑиÑÑÑÑем пÑиÑваивании:
let key = "z";
let { [key]: foo } = { z: "bar" };
console.log(foo); // "bar"
СпеÑиÑикаÑии СовмеÑÑимоÑÑÑ Ñ Ð±ÑаÑзеÑами
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4