Есть стандартная рекурсивная функция проверки строки на палиндром. При первоначальном вызове строка-аргумент должна приводиться к нижнему регистру и чиститься от пробелов. Чтобы эти действия не повторялись при каждом рекурсивном вызове, осуществляется проверка свойства
caller
функции.
function isPalindrome(strToCheck) {
if(isPalindrome.caller === null || isPalindrome.caller.name != "isPalindrome") {
strToCheck = strToCheck.toLowerCase().replace(/ /g, '');
}
if (strToCheck.length <= 1) {
return true;
}
if (strToCheck.charAt(0) != strToCheck.charAt(strToCheck.length - 1)) {
return false;
}
return isPalindrome(strToCheck.substr(1, strToCheck.length - 2));
}
Но в строгом режиме использовать
caller
нельзя. Можно ли реализовать этот функционал как-то иначе, не убирая
'use strict'
и не заменяя рекурсию циклом?
UPD: Хотелось бы найти примерно такое же красивое и чистое решение и не плодить дополнительных параметров или функций.