diff --git a/1-js/1-getting-started/1-intro/article.md b/1-js/1-getting-started/1-intro/article.md index 9dc5df7d..efa1111c 100644 --- a/1-js/1-getting-started/1-intro/article.md +++ b/1-js/1-getting-started/1-intro/article.md @@ -210,13 +210,13 @@ Adobe Flash -- кросс-браузерная платформа для мул [smart header="ES6 и ES7 прямо сейчас"] Существуют также трансляторы, которые берут код, использующий возможности будущих стандартов JavaScript, и преобразуют его в более старый вариант, который понимают все браузеры. -Например, [6to5](https://6to5.org/). +Например, [babeljs](https://babeljs.io/). Благодаря этому, мы можем использовать многие возможности будущего уже сегодня. [/smart] diff --git a/1-js/4-data-structures/10-arguments-pseudoarray/article.md b/1-js/4-data-structures/10-arguments-pseudoarray/article.md index 8db94177..12bf784e 100644 --- a/1-js/4-data-structures/10-arguments-pseudoarray/article.md +++ b/1-js/4-data-structures/10-arguments-pseudoarray/article.md @@ -268,72 +268,6 @@ function showWarning(width, height, title, contents) { } ``` -### "Именованные аргументы" - -*Именованные аргументы* -- альтернативная техника работы с аргументами, которая вообще не использует `arguments`. - -Некоторые языки программирования позволяют передать параметры как-то так: `f(width=100, height=200)`, то есть по именам, а что не передано, тех аргументов нет. Это очень удобно в тех случаях, когда аргументов много, сложно запомнить их порядок и большинство вообще не надо передавать, по умолчанию подойдёт. - -Такая ситуация часто встречается в компонентах интерфейса. Например, у "меню" может быть масса настроек отображения, которые можно "подкрутить" но обычно нужно передать всего один-два главных параметра, а остальные возьмутся по умолчанию. - -В JavaScript для этих целей используется передача аргументов в виде объекта, а в его свойствах мы передаём параметры. - -Получается так: - -```js -function showWarning(options) { - var width = options.width || 200; // по умолчанию - var height = options.height || 100; - - var title = options.title || "Предупреждение"; - - // ... -} - -showWarning({ -``` - -Вызвать такую функцию очень легко. Достаточно передать объект аргументов, указав в нем только нужные: - -```js -showWarning({ - contents: "Вы вызвали функцию" // и всё понятно! -}); -``` - -Сравним это с передачей аргументов через список: - -```js -showWarning(null, null, "Предупреждение!"); -// мысль программиста "а что это за null, null в начале? ох, надо глядеть описание функции" -``` - -Не правда ли, объект -- гораздо проще и понятнее? - -Еще один бонус кроме красивой записи -- возможность повторного использования объекта аргументов: - -```js -var opts = { - width: 400, - height: 200, - contents: "Текст" -}; - -showWarning(opts); - -opts.contents = "Другой текст"; - -*!* -showWarning(opts); // вызвать с новым текстом, без копирования других аргументов -*/!* -``` - -Именованные аргументы применяются во многих JavaScript-фреймворках. - - - - - ## Устаревшее свойство arguments.callee [#arguments-callee] [warn header="Используйте NFE вместо `arguments.callee`"] @@ -407,6 +341,72 @@ function f3() { В учебнике мы это свойство также не будем использовать. + +## "Именованные аргументы" + +*Именованные аргументы* -- альтернативная техника работы с аргументами, которая вообще не использует `arguments`. + +Некоторые языки программирования позволяют передать параметры как-то так: `f(width=100, height=200)`, то есть по именам, а что не передано, тех аргументов нет. Это очень удобно в тех случаях, когда аргументов много, сложно запомнить их порядок и большинство вообще не надо передавать, по умолчанию подойдёт. + +Такая ситуация часто встречается в компонентах интерфейса. Например, у "меню" может быть масса настроек отображения, которые можно "подкрутить" но обычно нужно передать всего один-два главных параметра, а остальные возьмутся по умолчанию. + +В JavaScript для этих целей используется передача аргументов в виде объекта, а в его свойствах мы передаём параметры. + +Получается так: + +```js +function showWarning(options) { + var width = options.width || 200; // по умолчанию + var height = options.height || 100; + + var title = options.title || "Предупреждение"; + + // ... +} + +showWarning({ +``` + +Вызвать такую функцию очень легко. Достаточно передать объект аргументов, указав в нем только нужные: + +```js +showWarning({ + contents: "Вы вызвали функцию" // и всё понятно! +}); +``` + +Сравним это с передачей аргументов через список: + +```js +showWarning(null, null, "Предупреждение!"); +// мысль программиста "а что это за null, null в начале? ох, надо глядеть описание функции" +``` + +Не правда ли, объект -- гораздо проще и понятнее? + +Еще один бонус кроме красивой записи -- возможность повторного использования объекта аргументов: + +```js +var opts = { + width: 400, + height: 200, + contents: "Текст" +}; + +showWarning(opts); + +opts.contents = "Другой текст"; + +*!* +showWarning(opts); // вызвать с новым текстом, без копирования других аргументов +*/!* +``` + +Именованные аргументы применяются во многих JavaScript-фреймворках. + + + + ## Итого