javascript – 为什么在使用模板字符串时可以在没有括号的情况下调用函数?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 为什么在使用模板字符串时可以在没有括号的情况下调用函数?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1224字,纯文字阅读大概需要2分钟。
内容图文
参见英文答案 > Backticks calling a function 2个
我有一个简单的日志功能:
function log(str) {
console.log('logged: ', str);
}
如果我在没有括号的情况下调用它(目前使用Chrome的开发工具)并传入模板字符串,如下所示:
log`foo`
输出为:logged:[“foo”,raw:Array [1]]
如果我用括号称呼它,
log(`foo`)
输出是:logged:foo
为什么在Javascript中使用模板字符串调用函数没有括号?发生了什么导致结果与用括号调用结果不同?
解决方法:
第一个示例(log`foo`)允许语言规范确定传递给日志函数的值(参见12.3.7).第二个例子(log(`foo`))显式传递一个参数.
模板文字可以包含字符串以及表达式.有时您可能希望从字符串部分和表达式部分更多地控制字符串的编译.在这种情况下,您可能正在寻找标记模板.
var name = "Jonathan";
var mssg = foo `Hello, ${name}. Nice name, ${name}.`;
function foo ( strings, ...values ) {
console.log( strings ); //["Hello, ", ". Nice name, ", ".", raw: Array[3]]
console.log( values ); //["Jonathan", "Jonathan"]
}
请注意这里所有字符串是如何通过第一个参数传入的.同样,所有插值值表达式都通过其余参数传递(这里一起拉到一个数组中).
通过这种增加的控制,我们可以做各种事情,例如本地化.在此示例中,语言规范确定要传递给函数的适当值 – 开发人员不会确定此值.
相比之下,当你调用log(foo)时,你最终只得到结果字符串.没有对象,没有零件,没有原始值.
内容总结
以上是互联网集市为您收集整理的javascript – 为什么在使用模板字符串时可以在没有括号的情况下调用函数?全部内容,希望文章能够帮你解决javascript – 为什么在使用模板字符串时可以在没有括号的情况下调用函数?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。