The reason is that JavaScript is part of the ECMA-262 standard.
If you read section 7.6, you will see part of the identifier syntax.
Essentially, the characters that can be used are defined:
Identifier :: IdentifierName but not ReservedWord IdentifierName :: IdentifierStart IdentifierName IdentifierPart IdentifierStart :: UnicodeLetter $ _ \ UnicodeEscapeSequence IdentifierPart :: IdentifierStart UnicodeCombiningMark UnicodeDigit UnicodeConnectorPunctuation <ZWNJ> <ZWJ>
source share