iul*_*net -1 javascript ecmascript-6
根据ES6规范,语法
foo`Hello!`
Run Code Online (Sandbox Code Playgroud)
应该表现得很像
foo('Hello!')
Run Code Online (Sandbox Code Playgroud)
在表达式之后放置模板文字会触发函数调用,类似于参数列表(括号中的逗号分隔值)如何触发函数调用.前面的代码等同于以下函数调用(实际上,函数获取更多信息,但稍后会对此进行说明).
但是,在以下代码段中,将值绑定到函数会导致2个语法的行为不同:
function alertParans() { alert(this) }
function alertNoParans() { alert `${this}` }
var executeParans = alertParans.bind('roman empire');
var executeNoParans = alertNoParans.bind('greek empire');
executeParans();
executeNoParans();Run Code Online (Sandbox Code Playgroud)
第一个电话打印'罗马帝国',而第二个电话打印一个逗号.为什么?
您应该阅读您链接的示例,因为它说的与您声称的不同.
tagFunction`Hello ${firstName} ${lastName}!`
tagFunction(['Hello ', ' ', '!'], firstName, lastName)
Run Code Online (Sandbox Code Playgroud)
现在,如果您将此应用于警报,它将如下所示:
function alertParans() { alert(['', ''], this); }
function alertNoParans() { alert`${this}`; }
var executeParans = alertParans.bind('roman empire');
var executeNoParans = alertNoParans.bind('greek empire');
executeParans();
executeNoParans();
Run Code Online (Sandbox Code Playgroud)
现在你在两种情况下都得到了逗号,因为alert现在的第一个参数总是一个带有两个空字符串的数组.为什么?
因为模板文字被分割成内容before(''),during(this)和after('')内插.
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |