ÐиÑÑÑие запÑÑÑе
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since иÑÐ»Ñ 2015 г..
* Some parts of this feature may have varying levels of support.
ÐиÑÑÑие запÑÑÑе (или "поÑледние запÑÑÑе") могÑÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ñ Ð¿Ñи добавлении новÑÑ ÑлеменÑов, паÑамеÑÑов или ÑвойÑÑв в код JavaScript. ÐÑли Ð²Ñ Ñ Ð¾ÑиÑе добавиÑÑ Ð½Ð¾Ð²Ð¾Ðµ ÑвойÑÑво, Ð²Ñ Ð¿ÑоÑÑо добавлÑеÑе новÑÑ ÑÑÑоÑÐºÑ Ð±ÐµÐ· Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿ÑедÑдÑÑей, еÑли в ней Ñже иÑполÑзована виÑÑÑÐ°Ñ Ð·Ð°Ð¿ÑÑаÑ. ÐÑо Ð´ÐµÐ»Ð°ÐµÑ ÑазлиÑÐ¸Ñ Ð² конÑÑоле веÑÑий ÑиÑе и изменение кода Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¼ÐµÐ½ÐµÐµ Ñ Ð»Ð¾Ð¿Ð¾ÑнÑм.
JavaScript Ñ Ñамого наÑала допÑÑÐºÐ°ÐµÑ Ð¸ÑполÑзоваÑÑ Ð²Ð¸ÑÑÑÐ¸Ñ Ð·Ð°Ð¿ÑÑÑÑ Ð² лиÑеÑÐ°Ð»Ð°Ñ Ð¼Ð°ÑÑива, а заÑем добавлÑл Ð¸Ñ Ð² лиÑеÑÐ°Ð»Ñ Ð¾Ð±ÑекÑа (ECMAScript 5) и, ÑовÑем недавно (ECMAScript 2017), к паÑамеÑÑам ÑÑнкÑий.
JSON, однако, не допÑÑÐºÐ°ÐµÑ Ð²Ð¸ÑÑÑÐ¸Ñ Ð·Ð°Ð¿ÑÑÑÑ .
ÐиÑÑÑие запÑÑÑе в лиÑеÑалаÑ
>ÐаÑÑивÑ
JavaScript игноÑиÑÑÐµÑ Ð²Ð¸ÑÑÑие запÑÑÑе в маÑÑÐ¸Ð²Ð°Ñ :
var arr = [1, 2, 3,];
arr; // [1, 2, 3]
arr.length; // 3
ÐÑли иÑполÑзовано болÑÑе одной виÑÑÑей запÑÑой, бÑдÑÑ ÑÐ¾Ð·Ð´Ð°Ð½Ñ "дÑÑки". ÐаÑÑив Ñ "дÑÑками" назÑваеÑÑÑ ÑазÑеженнÑм (плоÑнÑй маÑÑив не Ð¸Ð¼ÐµÐµÑ "дÑÑок"). ÐÑи иÑеÑаÑии маÑÑива пÑи помоÑи, напÑимеÑ, Array.prototype.forEach() или Array.prototype.map(), "дÑÑки" бÑдÑÑ Ð¿ÑопÑÑенÑ.
var arr = [1, 2, 3, , ,];
arr.length; // 5
ÐбÑекÑÑ
ÐаÑÐ¸Ð½Ð°Ñ Ñ ECMAScript 5, виÑÑÑие запÑÑÑе в обÑекÑÐ°Ñ Ñакже допÑÑÑимÑ:
var object = {
foo: "bar",
baz: "qwerty",
age: 42,
};
ÐиÑÑÑие запÑÑÑе в ÑÑнкÑиÑÑ
ECMAScript 2017 допÑÑÐºÐ°ÐµÑ Ð²Ð¸ÑÑÑие запÑÑÑе в ÑпиÑке паÑамеÑÑов ÑÑнкÑии.
ÐпÑеделение паÑамеÑÑов
СледÑÑÑие опÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑов ÑÑнкÑий допÑÑÑÐ¸Ð¼Ñ Ð¸ ÑавнознаÑÐ½Ñ Ð´ÑÑг дÑÑгÑ. ÐиÑÑÑие запÑÑÑе не влиÑÑÑ Ð½Ð° ÑвойÑÑво length ÑÑнкÑии или иÑ
обÑÐµÐºÑ arguments.
function f(p) {}
function f(p,) {}
(p) => {};
(p,) => {};
ÐиÑÑÑÐ°Ñ Ð·Ð°Ð¿ÑÑÐ°Ñ Ñакже ÑабоÑÐ°ÐµÑ Ñ Ð¾Ð¿Ñеделением меÑодов Ð´Ð»Ñ ÐºÐ»Ð°ÑÑов или обÑекÑов:
class C {
one(a,) {},
two(a, b,) {},
}
var obj = {
one(a,) {},
two(a, b,) {},
};
ÐÑзов ÑÑнкÑии
СледÑÑÑие вÑзовов ÑÑнкÑий допÑÑÑÐ¸Ð¼Ñ Ð¸ ÑавнознаÑÐ½Ñ Ð´ÑÑг дÑÑгÑ.
f(p);
f(p,);
Math.max(10, 20);
Math.max(10, 20,);
ÐедопÑÑÑимÑе виÑÑÑие запÑÑÑе
ÐпÑеделение паÑамеÑÑов ÑÑнкÑии или вÑзов ÑÑнкÑии, ÑодеÑжаÑиÑ
ÑолÑко запÑÑÑÑ Ð±ÑÐ´ÐµÑ Ð³ÐµÐ½ÐµÑиÑоваÑÑ SyntaxError. ÐÑоме Ñого, пÑи иÑполÑзовании оÑÑаÑоÑнÑÑ
паÑамеÑÑов не допÑÑкаеÑÑÑ Ð¸ÑполÑзоваÑÑ Ð²Ð¸ÑÑÑие запÑÑÑе:
function f(,) {} // SyntaxError: missing formal parameter
(,) => {}; // SyntaxError: expected expression, got ','
f(,) // SyntaxError: expected expression, got ','
function f(...p,) {} // SyntaxError: parameter after rest parameter
(...p,) => {} // SyntaxError: expected closing parenthesis, got ','
ÐиÑÑÑие запÑÑÑе в деÑÑÑÑкÑÑÑиÑовании
ÐиÑÑÑие запÑÑÑе Ñак же можно иÑполÑзоваÑÑ Ñлева пÑи иÑполÑзовании деÑÑÑÑкÑÑÑиÑÑÑÑего пÑиÑваиваниÑ:
// маÑÑив деÑÑÑÑкÑÑÑиÑÑеÑÑÑ Ñ Ð²Ð¸ÑÑÑей запÑÑой
[a, b,] = [1, 2];
// обÑÐµÐºÑ Ð´ÐµÑÑÑÑкÑÑÑиÑÑеÑÑÑ Ñ Ð²Ð¸ÑÑÑей запÑÑой
var o = {
p: 42,
q: true,
};
var { p, q } = o;
ÐÑÑ Ñаз, пÑи иÑполÑзовании оÑÑавÑиÑ
ÑÑ Ð¿Ð°ÑамеÑÑов бÑÐ´ÐµÑ ÑгенеÑиÑована SyntaxError:
var [a, ...b,] = [1, 2, 3];
// SyntaxError: rest element may not have a trailing comma
ÐиÑÑÑие запÑÑÑе в JSON
ÐиÑÑÑие запÑÑÑе в обÑекÑе допÑÑÑÐ¸Ð¼Ñ ÑолÑко в ECMAScript 5. Так как JSON оÑнован на ÑинÑакÑиÑе JavaScript ÑÑаÑÑе, Ñем ES5, виÑÑÑие запÑÑÑе не допÑÑкаÑÑÑÑ Ð² JSON.
Ðбе ÑÑÑоки генеÑиÑÑÑÑ SyntaxError:
JSON.parse("[1, 2, 3, 4, ]");
JSON.parse('{"foo" : 1, }');
// SyntaxError JSON.parse: unexpected character
// at line 1 column 14 of the JSON data
ÐпÑÑÑиÑе виÑÑÑие запÑÑÑе, ÑÑÐ¾Ð±Ñ Ð¿ÑавилÑно пÑоанализиÑоваÑÑ JSON:
JSON.parse("[1, 2, 3, 4 ]");
JSON.parse('{"foo" : 1 }');
СпеÑиÑикаÑии
СовмеÑÑимоÑÑÑ Ñ Ð±ÑаÑзеÑами
СмоÑÑиÑе Ñакже
- Initial ECMAScript proposal: trailing function commas by Jeff Morrison