Ecmascript 6 为什么ES6使用$和大括号来表示模板文本?

Ecmascript 6 为什么ES6使用$和大括号来表示模板文本?,ecmascript-6,Ecmascript 6,我刚刚阅读了ES6的一些新特性,我喜欢很多新添加的功能,但是我很困惑为什么模板文本需要$和{}来表示变量?这似乎太过分了,以至于违背了它们的初衷(节省空间和提高可读性)。我唯一的猜测是,他们从php中汲取了灵感,希望有所不同,以区分两者。但是添加了大括号后,几乎不会比按照旧方法构造字符串节省更多的空间 如图所示: 因为我们选择语法来减少学习曲线,所以我们选择了${…},因为它用于允许PHP和JQuery模板中的任意嵌入表达式。我们还包括缩写形式($ident),以便与Bash、Perl、PHP、

我刚刚阅读了ES6的一些新特性,我喜欢很多新添加的功能,但是我很困惑为什么模板文本需要
$
{}
来表示变量?这似乎太过分了,以至于违背了它们的初衷(节省空间和提高可读性)。我唯一的猜测是,他们从php中汲取了灵感,希望有所不同,以区分两者。但是添加了大括号后,几乎不会比按照旧方法构造字符串节省更多的空间

如图所示:

因为我们选择语法来减少学习曲线,所以我们选择了
${…}
,因为它用于允许PHP和JQuery模板中的任意嵌入表达式。我们还包括缩写形式(
$ident
),以便与Bash、Perl、PHP、Ruby等兼容

我们决定反对sprintf风格的格式化,因为尽管人们广泛理解它,但它不允许许多DSL应用程序,并且会带来O(n)认知负载(2)

备选方案包括:
Bash:
$(…)

Ruby:
{…}


但是,正如我们今天所看到的,仅使用
$expr
的简短语法不被接受(可能是因为最初它主要用于变量名,而不是任意表达式)。

因为
$a+b
不起作用。“表示变量”表达式,而不是变量。“你几乎没有节省更多的空间”节省空间不是重点。@zeroflagL我想他们的意思是,既然文字是用反勾号表示的,为什么不简单地
{a+b}
already@RGraham说得好。虽然literal
{}
可能比literal
${}
更常用,但是大括号允许使用任意表达式,这很好。不过,一个速记
$var
将是一个不错的选择。