Шрифт
Вопрос №10309 от пользователя Владимир Мухин в уроке «О, нет, ошибки! И как с ними справляться», курс «Введение в программирование»
Play

Вопрос №10309 от пользователя Владимир Мухин в уроке «О, нет, ошибки! И как с ними справляться», курс «Введение в программирование»

Добрый вечер! Я вроде всё прохожу без чужой помощи, но понимаю, что ещё немного и споткнусь. Мне непонятен синтаксис языка и не только. Вот например: функция вызывается в этом случае const nam = () => ; и в этом тоже const nam();, и в этом тоже function nam ();, и в этом тоже function nam = () => ;. В одном случае ставится знак равно и знак больше меньше или равно, а в другом нет, в одном случае ставятся фигурные скобки в другом нет. Мне нужно понять, что означает первое слово, что второе, ну и так далее, что, почему и зачем? По другому я понимаю понять мне будет сложно(ни кто и не говорил, что легко. ), сложно. А мне очень надо. Может посоветуете?

функция вызывается в этом случае const nam = () => ; и в этом тоже const nam();, и в этом тоже function nam ();, и в этом тоже function nam = () => ;.

Очень важно понимать и явно проговаривать, что ни в одном из этих случаев функция не вызывается. Давайте разбираться.

  1. Вот — определение функции: () => .
  2. А здесь мы записываем это определение в константу чтобы можно было к функции обращаться по имени: const nam = () => .

*И все, на этом этапе вам не нужно усложнять себе жизнь :) *

Комбинация => — это не "больше или равно", а стрелочка, типа → . Можно считать что стрелочка визуально показывает движение: взяли аргументы, перешли к телу функции — () → . (Больше или равно будет >= ).

Определение function nam() — это старая версия языка. В современном стандарте ES6, который мы изучаем в этом курсе, лучше использовать только стрелочное определение () => . В целом можно считать (если не углубляться), что эти записи эквивалентны:

  • const nam = () =>
  • function nam()

в одном случае ставятся фигурные скобки в другом нет.

Фигурные скобки ставятся в любом случае, они описывают тело функции. Существует формат без скобок для функций, состоящих из одной строки с выражением, но это не обязательно использовать. Если ставить фигурные скобки в 100% случаев, то все будет ок.

С Наилучшими пожеланиями! И заранее больше чем огромное спасибо!

а для чего мы ещё оборачиваем if, if else, else тоже так

Таковы правила языка — блоки кода оборачиваются в скобки . Это нужно чтобы отделить один блок кода от другого, одну функци от другой, одну ветвь условия if от другой ветви и от всего остального кода, и так далее. Это обозначение блоков кода.

const nam. и function nam. мы дали название функции "nam". а что такое const и function и есть ли ещё, что-то для определения функции

const и function - ключевые слова в javascript, использующиеся для создания констант и функций. Опять же, это просто специальные штуки, являющиеся частью языка.

или же я могу в авангарде поставить так - "ЛЮБОЕ СЛОВО ИЛИ ВЫРАЖЕНИЕ"(или есть что-то определённое и как тогда оно называется?) далее название функции

Конечно нет. Повторюсь:

  1. Вот — определение функции: () => .
  2. А здесь мы записываем это определение в константу чтобы можно было к функции обращаться по имени: const nam = () => .

Все, функции определяются так.

Вы можете попробовать написать любое слово или выражение вместо const и посмотреть что получится.

Огромное спасибо за ответ. Если честно думал не ответите, скажите: "Зануда" Почему я вам здесь задаю такие вопросы, на них нет ответов в интернете. Мне трудно понять в первом классе, что 5 + 5 = 10. Я понимаю, что 5 это цифра, а то, что цифра 5 ещё может получится 1 + 1 + 1 + 1 + 1 мне надо объяснить, так как я не поняв этого не смогу двигаться дальше. Всё таки у меня ещё остались вопросы и без ответов если честно я не смогу двигаться дальше, так как нет понимания: code text hereconst sequenceSum = (begin, end) => < if (begin === end)< return begin; >else if (begin > end) < return NaN; >else < return begin + sequenceSum(begin + 1, end); >>;

Вместо begin - 1, a end - 5. Опускаемся ниже в if условие не выполняется. В else if условие также не выполняется (я вообще не понимаю зачем оно (else if (begin > end))нужно здесь если оно никогда не выполнится или это просто условие такое в данном случае. Далее else, return возвращает(эти действия происходят внутри функции) 1 + sequenceSum(2, 5), далее 2 + sequenceSum(3, 5) и так далее до того пока не выполнится верхнее условие if (begin === end) где происходит сравнение значений и типов и оно выпадает.И у нас - 5 + sequenceSum(4 + 1, 5) другими словами 5 + sequenceSum(5, 5), а далее тёмный лес для меня. По умолчанию происходит "подъём из глубины" и сложение 1 + 2 + 3 + 4(отложенное сложение) и + 5. Теперь вопросы: 1)вместо чего подставляется Число 10 полученное при сложении 1 + 2 + 3 + 4?; 2)какая пятёрка из трёх (5 + sequenceSum(5, 5))(в скобках стоит оператор запятая значит выбирается последнее число? Или это не оператор, а просто знак препинания?) в выражении (1 + 2 + 3 + 4 + 5) которое даёт конечный результат число 15? 3)Какие действия происходят в скобках - sequenceSum(5, 5) и что такое sequenceSum() умножение на то, что в скобках или результат полученный в скобках это значение sequenceSum? 4)так как у меня есть непонимание в вышеизложенных вопросах возникает последний: произойдёт ли сложение в 5 + . (). Вот такая у меня муть в голове. И если не научится понимать, а там переменные, переменные в функциях, глобальные переменные будет вообще. Одним словом не вижу смысла двигаться дальше не поняв сегодняшнее. Просто попробовал вот это: let f1 = x => (x <= 1) ? 1 : x * f1(--x); f1 = (5); //120; и понял, что я ничего не понимаю(я понимаю как выполняется тернарный оператор и какие действия происходят, а как получилось 120 не понимаю) во всяком случае пока. С уважением и наилучшими пожеланиями! Очень рассчитываю на ваш не однозначный ответ. Заранее спасибо!

. let f1 = x => (x <= 1) ? 1 : x * f1(--x); f1(5); //120; Нет знака равно в последнем коде. Между f1 и (5).

📎📎📎📎📎📎📎📎📎📎