JS: Allowed Characters in Identifier

By Xah Lee. Date: . Last updated: .

What is allowed characters in JavaScript identifiers (variable/function names)?

JavaScript identifiers must:

ECMAScript 2015 §ECMAScript Language: Lexical Grammar#sec-names-and-keywords

Here's a example you can test:

// -*- coding: utf-8 -*-
// α GREEK SMALL LETTER ALPHA codepoint 945, x3b1
var α = 4;                      // ok
console.log(α);
// -*- coding: utf-8 -*-
// ♥ BLACK HEART SUIT codepoint 9829, #x2665
// is not a letter
var ♥ = 3; // SyntaxError: Unexpected token ILLEGAL
// -*- coding: utf-8 -*-
// 𓀀, EGYPTIAN HIEROGLYPH A001, x13000, (is a letter, but Not in Basic Multi-Lingual Plane)
var x𓀀 = 3; // SyntaxError: Unexpected token ILLEGAL

More example to play with:

// -*- coding: utf-8 -*-
// test if unicode is supported in var name or function name.

// Chinese char “愛” (x611b) in BMP, and is a Unicode letter
var 愛 = "♥";

// lambda λ (x3bb) in BMP, and is a Unicode letter
function λ(x) {return x;}

console.log(λ(愛));  // prints ♥

(To search for Unicode, or find a character's code point, see: Unicode Characters ☯ ⚡ ∑ ♥ 😄.)

What characters are Unicode Letter?

A “Unicode Letter” is a character whose Unicode property “general category”'s major value is “L”. In general, language's alphabets are Unicode letters, and Chinese characters are also Unicode Letter.

Examples of characters that's not Unicode letter: digits, punctuations, math symbols, emoticons.

How to determine if a character is a Unicode Letter?

You can find out whether a Unicode char is a letter using Python. See: Python: Process Unicode, unicodedata Module

Or in emacs, place cursor on (or before) the char, then M-x “describe-char”, then read the line “general-category”. 〔►see Emacs: Unicode Tutorial

What are examples of Unicode characters outside Basic Multilingual Plane?

Typically, new emoticons, or rarely used Chinese characters, or rarely used math symbols.

Examples of Unicode characters outside Basic Multilingual Plane:

Unicode Emoji 😄 😱 👽

See also: JS: Convert Character To/From Codepoint

Case Sensitivity in {HTML5, XML, CSS, JavaScript}

Case Sensitivity in {HTML5, XML, CSS, JavaScript}

String Topic

  1. JS: Default Charset/Encoding
  2. JS: String Code Unit vs Code Point
  3. JS: Unicode Character Escape Sequence
  4. JS: Allowed Characters in Identifier
  5. HTML: Allowed Characters in id Attribute
  6. HTML: Character Sets and Encoding
  7. HTML/XML Entity List

  1. JS: Template String
  2. JS: Convert String to Number
  3. JS: Encode URL, Escape String
  4. JS: Format Number
  5. JS: JSON Object

  1. JS: String Object
  2. JS: String.prototype
  3. JS: String Constructor
Like what you read? Buy JavaScript in Depth