Javascript 中标识符的 Unicode 转义序列

Unicode escape sequence for identifiers in Javascript

以下声明有效,

var \u0061 =2; // a  = 2;

但是下面声明报错,

var \u00A5 = 2; // suppose to be ¥ = 2;

代码点0xA5在BMP平面,为什么会报错?

这与你的转义序列无关,没关系。只是 ¥ 不是有效标识符,与 a 相反。作为货币符号的 identifier needs to start with $, _, "any Unicode code point with the Unicode property “ID_Start”", or an escape sequence for one of the previous. ¥ 不是这样的字符。

你所做的等同于:

var a = 2;
var ¥ = 2;

¥ 不是 JavaScript 中变量的有效字符。参见 What characters are valid for JavaScript variable names?