Skip to content

Нужно больше функций#2

Merged
keksobot merged 6 commits into
htmlacademy-javascript:masterfrom
Alshline:module2-task1
Jun 23, 2026
Merged

Нужно больше функций#2
keksobot merged 6 commits into
htmlacademy-javascript:masterfrom
Alshline:module2-task1

Conversation

@Alshline

@Alshline Alshline commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

Следующая д/з по работе со строками.
WebStorm ESLint ругается на неиспользуемые функции, поэтому пришлось использовать
// eslint-disable-next-line no-unused-vars


🎓 Нужно больше функций

@keksobot keksobot changed the title Module2 task1 Нужно больше функций Jun 23, 2026
Comment thread js/functions.js
@@ -0,0 +1,36 @@
// eslint-disable-next-line no-unused-vars
function checkStringLength(string, length) {
if (string || string === 0) {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

У чисел нет свойства length - полезно проверить, что значения является строкой

Comment thread js/functions.js
@@ -0,0 +1,36 @@
// eslint-disable-next-line no-unused-vars
function checkStringLength(string, length) {

@ILokalin ILokalin Jun 23, 2026

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

По сложившейся практике, более предпочтительно использовать стрелочне функции. Это будет один из критериев проверки проекта (хоть и дополнительный).

function используется в тех случаях, когда требуется всплытие или использование контекста функции.

Предпочтение не документируется и больше связано с рядом критериев:

  • более лаконичный синтаксис
  • предсказуемость использования функции - нет всплытия и функция объявляется до ее использования
  • стрелочные функции не создают своего собственного контекста и захватывают this из окружния контекста, где функция была объявлена - это тоже про предсказуемость

Comment thread js/functions.js
@@ -0,0 +1,36 @@
// eslint-disable-next-line no-unused-vars
function checkStringLength(string, length) {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Немного про название - функции предикаты, которые возвращают утверждение (true/false) принято именовать в форме вопроса (как у вас ниже с провекой палиндрома).

Чаще всего имя начинаются с is, has, can: isLengthLessThanOrEqual, isValidLength, hasMaxChars, canFit.

check - хорошо, но не дает уверенности в предстоящем результате.

Comment thread js/functions.js

// eslint-disable-next-line no-unused-vars
function isStringPalindrome(string) {
return string === string.reverse();

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Работает ли решение для строк?

Comment thread js/functions.js

// eslint-disable-next-line no-unused-vars
function anotherPalindromeCheck(string) {
for (let i = 0; i < string.length(); i++) {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Решение не рабочее:

  • length не является функцией
  • проверять нужно не -1 символ от длины

После этих исправлений будет избыточная проверка. Например, "лёшанаполкеклопанашёл" потребует в два раза больше шагов, чем необходимо.

И полезно исключить регистрозависимость - пример в задании: "ДовОд"

Comment thread js/functions.js
let result = '';

for (const char of string.toString()) {
if (char >= '0' && char <= '9') {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Хорошее решение и в нем полезно отдать предпочтение parseInt, не сравнивать строки

@keksobot keksobot merged commit 2c475a8 into htmlacademy-javascript:master Jun 23, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants