extraction
String.prototype.at
Returns the UTF-16 code unit at the given index as a single-character string, supporting negative indices that count from the end. Added in ES2022 as a cleaner alternative to str[str.length - 1].
str.at(index) Parameters
| Parameter | Purpose |
|---|---|
| index | Integer position; negative counts from end (-1 is last) |
| returns | Single-character string or undefined if out of range |
Examples
console.log('hello'.at(0)); Prints 'h'
console.log('hello'.at(-1)); Prints 'o'
console.log('hello'.at(10)); Prints undefined
console.log('😀'.at(0)); Prints '\uD83D' (lone surrogate half — at() is code-unit based)
Gotcha
Out-of-range indices return undefined (not ''). Indexes UTF-16 code units, so astral characters like emoji take two positions.
Related methods
String.prototype.slice
Extracts a section of the string from beginIndex up to but not including endIndex, returning a new string. Negative indices count from the end.
String.prototype.codePointAt
Returns the full Unicode code point (0–0x10FFFF) starting at the given position, correctly combining surrogate pairs. Added in ES2015 as the Unicode-safe counterpart to charCodeAt.
String.prototype.length
Read-only property giving the number of UTF-16 code units in the string. Not the number of visible characters — emoji and combining marks can inflate the count.
String.prototype.substring
Returns a new string between indexStart and indexEnd (exclusive). Unlike slice(), negative arguments are treated as 0 and the arguments are swapped when indexStart > indexEnd.
String.prototype.substr
Returns a portion of the string starting at start with the specified length. Deprecated as a legacy web feature — new code should use slice or substring, but implementations still ship it.