Mar 16, 2022
To get a character from a string in JavaScript, we recommend using square brackets []
.
string[1]
returns a string of length 1 containing the 2nd character in the array.
If you access an index that is < 0
or greater than the length of the string, you’ll get back undefined
.
const string = 'Hello';
const letter = string[1];
string[1];
string[20];
string[-1];
string['not a number'];
Keep in mind that string[1]
returns a string with length 1.
There is no distinct character type in JavaScript like there is in Java or C++.
typeof string[1];
The charAt() function
The charAt()
function also returns the character at the given index of a string.
There are three key differences.
First, if you call charAt()
on an index that is < 0
or greater than the length of the string, charAt()
will return an empty string.
const string = 'Hello';
string.charAt(1);
string.charAt(42);
string.charAt(-1);
Second, if you call charAt()
with a value that JavaScript cannot convert to a number, charAt()
will return the character at index 0.
string;
string.charAt('not a number');
Third, charAt()
can implicitly convert values to numbers.
For example, if you pass an object with a valueOf()
function to charAt()
, JavaScript will call valueOf()
to try to convert the value to a number.
This can lead to unexpected behaviors, like being able to call charAt()
on a Date
.
string;
string.charAt({ valueOf: () => 1 });
string.charAt(new Date(1));
string[{ valueOf: () => 1 }];
string[new Date(1)];
Because of the potentially unexpected behaviors of charAt(i)
, we typically recommend using [i]
to get the i-th character in a string.