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