javascript palindrome example

Example 1: How do you detect whether or not a word is a palindrome in javascript

function palindrome(str) {
  // Step 1. Lowercase the string and use the RegExp to remove unwanted characters from it
  var re = /[\W_]/g; // or var re = /[^A-Za-z0-9]/g;
  
  var lowRegStr = str.toLowerCase().replace(re, '');
  // str.toLowerCase() = "A man, a plan, a canal. Panama".toLowerCase() = "a man, a plan, a canal. panama"
  // str.replace(/[\W_]/g, '') = "a man, a plan, a canal. panama".replace(/[\W_]/g, '') = "amanaplanacanalpanama"
  // var lowRegStr = "amanaplanacanalpanama";
     
  // Step 2. Use the same chaining methods with built-in functions from the previous article 'Three Ways to Reverse a String in JavaScript'
  var reverseStr = lowRegStr.split('').reverse().join(''); 
  // lowRegStr.split('') = "amanaplanacanalpanama".split('') = ["a", "m", "a", "n", "a", "p", "l", "a", "n", "a", "c", "a", "n", "a", "l", "p", "a", "n", "a", "m", "a"]
  // ["a", "m", "a", "n", "a", "p", "l", "a", "n", "a", "c", "a", "n", "a", "l", "p", "a", "n", "a", "m", "a"].reverse() = ["a", "m", "a", "n", "a", "p", "l", "a", "n", "a", "c", "a", "n", "a", "l", "p", "a", "n", "a", "m", "a"]
  // ["a", "m", "a", "n", "a", "p", "l", "a", "n", "a", "c", "a", "n", "a", "l", "p", "a", "n", "a", "m", "a"].join('') = "amanaplanacanalpanama"
  // So, "amanaplanacanalpanama".split('').reverse().join('') = "amanaplanacanalpanama";
  // And, var reverseStr = "amanaplanacanalpanama";
   
  // Step 3. Check if reverseStr is strictly equals to lowRegStr and return a Boolean
  return reverseStr === lowRegStr; // "amanaplanacanalpanama" === "amanaplanacanalpanama"? => true
}
 
palindrome("A man, a plan, a canal. Panama");

Example 2: javascript palindrome

function remove_spaces_strict(string)
{
    return string.replace(/\s/gm, "");
}

function to_lower_case(string="")
{
    return string.toLocaleLowerCase();
}


function isPalindrome(string) {
    let string1 = string;
    if (typeof string === 'string' || typeof string === 'number') {
        if (typeof string === 'number') {
            string1 = new Number(string1).toString();
        }
        string1 = remove_spaces_strict(string1);
        string1 = to_lower_case(string1);
        let len1 = string1.length;
        let len = Math.floor(string1.length / 2);
        let i = 0;

        while(i < len) {
    
                if (string1[i] !== string1[len1 - (1 + i)]) {
                    return false;
                }
                console.log(string1[i] + " = " + string1[len1 - (1 + i)]);
                i++;
            }
    }else{
        throw TypeError(`Was expecting an argument of type string1 or number, recieved an argument of type ${ typeof string1}`);
    }
    return string;
}