Форум программистов, компьютерный форум, киберфорум
Наши страницы

JavaScript

Войти
Регистрация
Восстановить пароль
 
Kotik12345
0 / 0 / 0
Регистрация: 05.03.2017
Сообщений: 26
#1

ES6 - JavaScript

20.03.2017, 10:57. Просмотров 150. Ответов 2
Метки нет (Все метки)

Можете пожалуйста объяснить, что здесь делается в каждой строчке.

const say = (what, ...names) => {
const [last, ...initial] = names.reverse();
const finalSeparator = (names.length > 1 ? ', &' : '');
return `${what} ${initial.join(', ')} ${finalSeparator} ${last}`;
};

say('hello', 'fred', 'barney', 'pebbles');
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.03.2017, 10:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос ES6 (JavaScript):

Синтаксис ES6 - JavaScript
Ув форумчане, хочу потихонбку перейти в ES6 , сам js не давно изучаю . Достаточно продвинулся. Но вот изучаю ES6 столкнулся с маленькой...

[ES6] Определение методов класса в конструкторе - JavaScript
Всем привет ! Читая документацию ReactJS, наткнулся на такой подход в создании класса class LoginControl extends...

ES6 Promises - JavaScript
Доброго времени суток, коллеги! Вот сижу разбираюсь уже битый час с этой темой, и чёт совсем запутался. Помогите разобраться пожалуйста....

Классовое свойство не определено ES6 - Node.js
class MainController extends Controller { constructor () { super(); this.name = 'MainController'; } ...

Синтаксис ES6 - JavaScript
Ув форумчане, хочу потихонбку перейти в ES6 , сам js не давно изучаю . Достаточно продвинулся. Но вот изучаю ES6 столкнулся с маленькой...

[ES6] Определение методов класса в конструкторе - JavaScript
Всем привет ! Читая документацию ReactJS, наткнулся на такой подход в создании класса class LoginControl extends...

ES6 Promises - JavaScript
Доброго времени суток, коллеги! Вот сижу разбираюсь уже битый час с этой темой, и чёт совсем запутался. Помогите разобраться пожалуйста....

Классовое свойство не определено ES6 - Node.js
class MainController extends Controller { constructor () { super(); this.name = 'MainController'; } ...

Синтаксис ES6 - JavaScript
Ув форумчане, хочу потихонбку перейти в ES6 , сам js не давно изучаю . Достаточно продвинулся. Но вот изучаю ES6 столкнулся с маленькой...

[ES6] Определение методов класса в конструкторе - JavaScript
Всем привет ! Читая документацию ReactJS, наткнулся на такой подход в создании класса class LoginControl extends...

ES6 Promises - JavaScript
Доброго времени суток, коллеги! Вот сижу разбираюсь уже битый час с этой темой, и чёт совсем запутался. Помогите разобраться пожалуйста....

Классовое свойство не определено ES6 - Node.js
class MainController extends Controller { constructor () { super(); this.name = 'MainController'; } ...

Синтаксис ES6 - JavaScript
Ув форумчане, хочу потихонбку перейти в ES6 , сам js не давно изучаю . Достаточно продвинулся. Но вот изучаю ES6 столкнулся с маленькой...

[ES6] Определение методов класса в конструкторе - JavaScript
Всем привет ! Читая документацию ReactJS, наткнулся на такой подход в создании класса class LoginControl extends...

ES6 Promises - JavaScript
Доброго времени суток, коллеги! Вот сижу разбираюсь уже битый час с этой темой, и чёт совсем запутался. Помогите разобраться пожалуйста....

Классовое свойство не определено ES6 - Node.js
class MainController exte

Синтаксис ES6 - JavaScript
Ув форумчане, хочу потихонбку перейти в ES6 , сам js не давно изучаю . Достаточно продвинулся. Но вот изучаю ES6 столкнулся с маленькой...

[ES6] Определение методов класса в конструкторе - JavaScript
Всем привет ! Читая документацию ReactJS, наткнулся на такой подход в создании класса class LoginControl extends...

ES6 Promises - JavaScript
Доброго времени суток, коллеги! Вот сижу разбираюсь уже битый час с этой темой, и чёт совсем запутался. Помогите разобраться пожалуйста....

Классовое свойство не определено ES6 - Node.js
class MainController extends Controller { constructor () { super(); this.name = 'MainController'; } ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
j2FunOnly
the hardway first
549 / 534 / 248
Регистрация: 05.06.2015
Сообщений: 1,268
20.03.2017, 12:51 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Вот почитайте немного теории для начала.
Fat Arrow
Деструктурирующее присваивание
Условный (тернарный) оператор
Интерполяция строк (шаблонные строки)
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/**
 * Функция, принимающая переменное число параметров.
 * В `what` будет записан первый параметр,
 * в массив `names` будут записаны все остальные.
 */
const say = (what, ...names) => {
  /**
   * Array.reverse() - вернет копию массива,
   * элементы которого идут в обратном порядке.
   * Деструктурирующее присваивание - `last` первый элемент массива,
   * в массив `initial` - все остальные элементы массива `names`.
   */
  const [last, ...initial] = names.reverse();
  /**
   * Условный (тернарный) оператор
   * условие ? true : false
   * в `finalSeparator` записать ', &' если длина массива `names` больше 1,
   * иначе пустую строку.
   */
  const finalSeparator = (names.length > 1 ? ', &' : '');
  /**
   * Шаблонная строка, всё что внутри `${...}` - является JS выражением, в
   * строку подставляется результат вычисления данного выражения.
   * Аналогичная запись "по-старинке"
   * return what + ' ' + initial.join(', ') + ' ' + finalSeparator + ' ' +
   *   last;
   */
  return `${what} ${initial.join(', ')} ${finalSeparator} ${last}`;
};
 
say('hello', 'fred', 'barney', 'pebbles'); //=> hello barney, fred , & pebbles
1
Padimanskas
Superposition
854 / 592 / 109
Регистрация: 27.10.2013
Сообщений: 2,060
20.03.2017, 12:51 #3
Javascript
1
2
3
4
5
6
7
const say = (what, ...names) => { // стрелочная функция
const [last, ...initial] = names.reverse(); // деструктуризация. Из массива созданного reverse, создаются переменные last куда вставляется значение names.reverse()[0], а все остальное попадает в массив initial
const finalSeparator = (names.length > 1 ? ', &' : ''); // тернарное выражение, тоже самое что и if else
return `${what} ${initial.join(', ')} ${finalSeparator} ${last}`; // угловые кавычки могут представлять из себя шаблон и  выполнять выражения 
};
 
say('hello', 'fred', 'barney', 'pebbles');
Таким образом функция say принимает два аргумента what и сколько угодно в names.
далее выполняется names.reverse() значения которого помещаются в переменную last и initial.
создается константа которая инициализируется результатом выполнения тернарного оператора и в нее попадет либо ', &' либо пустая строка.
На последнем шаге функция возвратит строку в которую попадут значения what, initial.join(', '), finalSeparator и last

надеюсь ничего не пропустил
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru