
Strings not containing any lone surrogates are called well-formed strings, and are safe to be used with functions that do not deal with UTF-16 (such as encodeURI() or TextEncoder).
Although most JavaScript built-in methods handle them correctly because they all work based on UTF-16 code units, lone surrogates are often not valid values when interacting with other systems - for example, encodeURI() will throw a URIError for lone surrogates, because URI encoding uses UTF-8 encoding, which does not have any encoding for lone surrogates. Lone surrogates do not represent any Unicode character. is a low surrogate), but it is the first code unit in the string, or the previous code unit is not a high surrogate.
It is in the range 0xDC00– 0xDFFF, inclusive (i.e. is a high surrogate), but it is the last code unit in the string, or the next code unit is not a low surrogate. It is in the range 0xD800– 0xDBFF, inclusive (i.e. Template literal: `$ where xxxxxx represents 1–6 hex digits.Ī "lone surrogate" is a 16-bit code unit satisfying one of the descriptions below:. There are several ways to achieve nearly the same effect in JavaScript. The resulting primitive is then converted to a string. Objects are first converted to a primitive by calling its (with "string" as hint), toString(), and valueOf() methods, in that order. BigInts are converted with the same algorithm as toString(10). Numbers are converted with the same algorithm as toString(10). true turns into "true" false turns into "false". The operation can be summarized as follows:
Many built-in operations that expect strings first coerce their arguments to strings (which is largely why String objects behave similarly to string primitives).
Object.prototype._lookupSetter_() Deprecated. Object.prototype._lookupGetter_() Deprecated. Object.prototype._defineSetter_() Deprecated.
Object.prototype._defineGetter_() Deprecated.