ES2015 中有效的 JavaScript 变量名
ES2015 更新了标识符的语法。 这会影响很多事情,但最重要的是,标识符可以用作变量名称,并且标识符名称是有效的不带引号的属性名称。 这篇文章描述了与旧 ES5 行为相比的可观察到的变化。
保留字
ES2015 在模块上下文中保留了 await
关键字以供将来使用。
// Valid in ES5, but invalid in an ES2015 module context:
var await;
转义序列
ES5 标识符中唯一允许的转义序列类型是 \uXXXX
形式的所谓 Unicode 转义。
在 ES2015 中,新的 Unicode 代码点转义语法也被接受。
// Valid in ES5 and ES2015:
var a;
// Valid in ES5 and ES2015:
var \u0061;
// Invalid in ES5, but valid in ES2015:
var \u{61};
可接受的 Unicode 符号
在 ES2015 中,标识符必须以 $
、_
或任何具有 Unicode 派生核心属性 ID_Start
的符号开头。
标识符的其余部分可以包含 $
、_
、U+200C
零宽度非连接符、U+200D
零宽度连接符或具有 Unicode 派生核心属性 ID_Continue
的任何符号。
这不同于基于 Unicode 类别的 ES5 标识符名称的定义。 因此,一些在 ES5 标识符中不允许使用的 Unicode 符号现在可以在 ES2015 标识符中使用,反之亦然。
// Valid in ES5 & Unicode v5.1.0+, but invalid in ES2015:
var ⸯ; // U+2E2F VERTICAL TILDE
var \u2E2F; // U+2E2F VERTICAL TILDE
在 ES5 标识符中,星体符号是不允许的,即使表示为转义代理对 (\uXXXX\uXXXX
)。
在 ES2015 中,当表示为原始符号或使用单个 \u{...}
转义序列时,标识符中的 astral ID_Start 或 ID_Continue 符号被接受。
// Invalid in ES5, but valid in ES2015:
var 𐊧; // U+102A7 CARIAN LETTER A2
var \u{102A7}; // U+102A7 CARIAN LETTER A2
// Invalid in ES5 and ES2015:
var \uD800\uDEA7; // U+102A7 represented as a surrogate pair
ES5 规范允许实现将其标识符支持建立在与 Unicode v3.0.0 一样古老的 Unicode 版本上。 ES2015 将 Unicode v5.1.0 列为兼容性所需的最低 Unicode 版本。
// Valid in ES5, but only works in some ES5 engines (i.e. those with Unicode
// data from v3.2.0 or more recent):
var Ƞ; // U+0220 LATIN CAPITAL LETTER N WITH LONG RIGHT LEG
var \u0220;
// On the other hand, it is guaranteed to work in all ES2015-compliant engines.
// Valid in ES5, but only works in some ES5 engines (i.e. those with Unicode
// data from v4.0.0 or more recent):
var ȡ; // U+0221 LATIN SMALL LETTER D WITH CURL
var \u0221;
// On the other hand, it is guaranteed to work in all ES2015-compliant engines.
// Valid in ES5, but only works in some ES5 engines (i.e. those with Unicode
// data from v5.1.0 or more recent):
var _҇; // U+0487 COMBINING CYRILLIC POKRYTIE
var _\u0487;
// On the other hand, it is guaranteed to work in all ES2015-compliant engines.
不再有非标准行为
在某些时候,如果至少有一个字符被转义,所有主要的 JavaScript 引擎都支持保留字作为标识符。 例如,var var;
不会工作,但是例如 var v\u0061r;
会——尽管这从来都不是规范的一部分。
// Invalid in ES5 and ES2015:
var var;
// Invalid in ES5 and ES2015, but supported in old ES5 engines:
var v\u0061r;
ES2015 明确地使这种行为不合规,并且实现正在放弃它。 Firefox/Spidermonkey、Safari/JavaScriptCore 和 IE/Chakra 已经放弃了这种行为; Chrome/Opera/V8 也计划放弃。
相关文章
在 PHP 变量中存储 Div Id 并将其传递给 JavaScript
发布时间:2023/03/29 浏览次数:69 分类:PHP
-
本文教导将 div id 存储在 PHP 变量中并将其传递给 JavaScript 代码。
在 JavaScript 中从字符串中获取第一个字符
发布时间:2023/03/24 浏览次数:93 分类:JavaScript
-
在本文中,我们将看到如何使用 JavaScript 中的内置方法获取字符串的第一个字符。
在 JavaScript 中获取字符串的最后一个字符
发布时间:2023/03/24 浏览次数:141 分类:JavaScript
-
本教程展示了在 javascript 中获取字符串最后一个字符的方法