Нужно больше функций#2
Conversation
| @@ -0,0 +1,36 @@ | |||
| // eslint-disable-next-line no-unused-vars | |||
| function checkStringLength(string, length) { | |||
| if (string || string === 0) { | |||
There was a problem hiding this comment.
У чисел нет свойства length - полезно проверить, что значения является строкой
| @@ -0,0 +1,36 @@ | |||
| // eslint-disable-next-line no-unused-vars | |||
| function checkStringLength(string, length) { | |||
There was a problem hiding this comment.
По сложившейся практике, более предпочтительно использовать стрелочне функции. Это будет один из критериев проверки проекта (хоть и дополнительный).
function используется в тех случаях, когда требуется всплытие или использование контекста функции.
Предпочтение не документируется и больше связано с рядом критериев:
- более лаконичный синтаксис
- предсказуемость использования функции - нет всплытия и функция объявляется до ее использования
- стрелочные функции не создают своего собственного контекста и захватывают
thisиз окружния контекста, где функция была объявлена - это тоже про предсказуемость
| @@ -0,0 +1,36 @@ | |||
| // eslint-disable-next-line no-unused-vars | |||
| function checkStringLength(string, length) { | |||
There was a problem hiding this comment.
Немного про название - функции предикаты, которые возвращают утверждение (true/false) принято именовать в форме вопроса (как у вас ниже с провекой палиндрома).
Чаще всего имя начинаются с is, has, can: isLengthLessThanOrEqual, isValidLength, hasMaxChars, canFit.
check - хорошо, но не дает уверенности в предстоящем результате.
|
|
||
| // eslint-disable-next-line no-unused-vars | ||
| function isStringPalindrome(string) { | ||
| return string === string.reverse(); |
There was a problem hiding this comment.
Работает ли решение для строк?
|
|
||
| // eslint-disable-next-line no-unused-vars | ||
| function anotherPalindromeCheck(string) { | ||
| for (let i = 0; i < string.length(); i++) { |
There was a problem hiding this comment.
Решение не рабочее:
lengthне является функцией- проверять нужно не
-1символ от длины
После этих исправлений будет избыточная проверка. Например, "лёшанаполкеклопанашёл" потребует в два раза больше шагов, чем необходимо.
И полезно исключить регистрозависимость - пример в задании: "ДовОд"
| let result = ''; | ||
|
|
||
| for (const char of string.toString()) { | ||
| if (char >= '0' && char <= '9') { |
There was a problem hiding this comment.
Хорошее решение и в нем полезно отдать предпочтение parseInt, не сравнивать строки
Следующая д/з по работе со строками.
WebStorm ESLint ругается на неиспользуемые функции, поэтому пришлось использовать
// eslint-disable-next-line no-unused-vars
🎓 Нужно больше функций