В чем разница методов для строки .slice() и .substr()
Оба метода работают схожим образом, они возвращают подстроку в заданном диапазоне:
const text = 'hexlet';
console.log(text.slice(1, 3)); // => ex
console.log(text.substr(1, 3)); // => exl
Метод slice
принимает первым параметром индекс, с которого начинается извлечение, а вторым индекс, по которому идёт извлечение.
Метод substr
первым параметром принимает тоже индекс, с которого идёт извлечение, а вторым параметром длину извлекаемой подстроки (поэтому в примере этот метод извлек на один символ больше).
Метод slice
более универсальный и работает также с массивами. Метод substr
считается устаревшим и не рекомендуется к использованию. Вместо него лучше использовать substring
- 'этот метод работает так же, как slice
.
Метод substr()
не является частью стандарта ECMAScript, а был добавлен в браузеры Netscape Navigator и Internet Explorer в далеком прошлом. В настоящее время он заменен на методы substring()
и slice()
, которые являются частью стандарта ECMAScript и поддерживаются всеми современными браузерами.
Во-вторых, метод substr()
имеет неоднозначное поведение при передаче отрицательных значений в качестве аргументов. Например, если передать отрицательное значение второго аргумента, то метод substr()
будет воспринимать его как индекс символа с конца строки, а не как количество символов, которые нужно извлечь. Это может привести к неожиданным результатам и ошибкам в коде.