.toLowerCase not working, replacement function?

155,523

Solution 1

The .toLowerCase() function only exists on strings.

You can call .toString() on anything in JavaScript to get a string representation.

Putting this all together:

var ans = 334;
var temp = ans.toString().toLowerCase();
alert(temp);

Solution 2

Numbers inherit from the Number constructor which doesn't have the .toLowerCase method. You can look it up as a matter of fact:

"toLowerCase" in Number.prototype; // false

Solution 3

It's not an error. Javascript will gladly convert a number to a string when a string is expected (for example parseInt(42)), but in this case there is nothing that expect the number to be a string.

Here's a makeLowerCase function. :)

function makeLowerCase(value) {
  return value.toString().toLowerCase();
}

Solution 4

var ans = 334 + '';
var temp = ans.toLowerCase();
alert(temp);

Solution 5

It is a number, not a string. Numbers don't have a toLowerCase() function because numbers do not have case in the first place.

To make the function run without error, run it on a string.

var ans = "334";

Of course, the output will be the same as the input since, as mentioned, numbers don't have case in the first place.

Share:
155,523
Lucas
Author by

Lucas

Updated on August 14, 2021

Comments

  • Lucas
    Lucas over 2 years

    The .toLowerCase method is giving me an error when I try to use it on numbers. This is what I have:

    var ans = 334;
    var temp = ans.toLowerCase();
    alert(temp);
    

    And then it gives me this error:

    'undefined' is not a function (evaluating 'ans.toLowerCase()')
    

    I don't know where I got this wrong. I always thought that numbers can also be parsed, with no change in result (maybe that's where I stuffed up).

    But if that's not the error, can someone write a custom makeLowerCase function, to make the string lower case, perhaps using regex or something?

  • Lucas
    Lucas over 11 years
    is there a way to let ans retain its type, and not get converted into a string?
  • spender
    spender over 11 years
    Um... why on earth do you want to lowercase it then??? Anyway, ans is still a number when all this code has run. .toString() does not modify the original value (i.e. you're not storing it back to ans)
  • spender
    spender over 11 years
    @think123 I suggest that you shore up your understanding of the different javascript types and keep strings as strings and numbers as numbers. There's no need to be confused about the type of a variable. Where does the value of ans come from really? Why might the type of ans be unknown?
  • Gogol
    Gogol almost 10 years
    @think123 Try : if(typeof ans == 'string') ans = ans.toLowerCase();
  • Kurkula
    Kurkula over 7 years
    Cannot read property 'toString' of undefined. I think we have to check type and then do this as Gogol mentioned.
  • S.Akruwala
    S.Akruwala about 7 years
    check for the undefined first and then convert it to string. try : if(ans != undefined && ans != 'undefined' && ans != null) { ans = ans.tostring(); .... other logic}