如何在模板文字中调用调用函数
How to call calling a function inside a Template literal
如何在 Template literal.
中调用函数
下面尝试中的函数语法显示在 HTML:
function readURL(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
var html = `
<div class="row">
${reader.onload = function (e) {
$('#image_upload_preview').attr('src', e.target.result);
}}
<img id="image_upload_preview" src="http://placehold.it/100x100" alt="your image" />
</div>
`;
$("#test").append(html);
reader.readAsDataURL(input.files[0]);
}
}
$("#multi-file").change(function () {
readURL(this);
});
提前谢谢大家。
如果我对你的问题理解正确,你想在模板文字中定义和调用函数。
一些背景:
您可以在模板文字中执行表达式,如下所示:
function fun(){
return 5
}
var someLit=`some function got a value ${fun()}`
所以这是文字中函数最简单和最好的用法。现在你在你的例子中试图做的是,计算表达式
reader.onload = function (e) {
$('#image_upload_preview').attr('src', e.target.result);
}
在模板文字中,这绑定了 onload 事件,但是 reader.onload
的 returned 值在模板文字中的那个位置被替换。
你会在输出中看到 function(){...
。
如果您不想在输出中看到该函数声明,您可以立即调用该函数。
示例:
(reader.onload = function (e) {
$('#image_upload_preview').attr('src', e.target.result);
})();
这将 return 未定义在表达式的位置。现在如果你想避免undefined
,你可以return你的函数中的一些空字符串。
(reader.onload = function (e) {
$('#image_upload_preview').attr('src', e.target.result);
return '';
})();
现在,由于您已将此函数用作事件的回调,因此立即调用该函数可能无济于事(因为您不会在那里获得 e 参数)。
因此您可以将事件绑定到另一个函数中,例如:
(function(){
reader.onload = function (e) {
$('#image_upload_preview').attr('src', e.target.result);
}
return '';
})();
这将声明绑定到您的 onload
事件并且不会在您的模板文字中留下痕迹的函数。
注:
最好的选择是在模板字面量之外简单地声明函数,然后在字面量中随心所欲地调用它
这是在模板文字中调用函数的方法。
function something() {
return "better than nothing";
}
console.log(`Something is ${something()}.`);
//=> Something is better than nothing.
如何在 Template literal.
中调用函数下面尝试中的函数语法显示在 HTML:
function readURL(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
var html = `
<div class="row">
${reader.onload = function (e) {
$('#image_upload_preview').attr('src', e.target.result);
}}
<img id="image_upload_preview" src="http://placehold.it/100x100" alt="your image" />
</div>
`;
$("#test").append(html);
reader.readAsDataURL(input.files[0]);
}
}
$("#multi-file").change(function () {
readURL(this);
});
提前谢谢大家。
如果我对你的问题理解正确,你想在模板文字中定义和调用函数。
一些背景:
您可以在模板文字中执行表达式,如下所示:
function fun(){
return 5
}
var someLit=`some function got a value ${fun()}`
所以这是文字中函数最简单和最好的用法。现在你在你的例子中试图做的是,计算表达式
reader.onload = function (e) {
$('#image_upload_preview').attr('src', e.target.result);
}
在模板文字中,这绑定了 onload 事件,但是 reader.onload
的 returned 值在模板文字中的那个位置被替换。
你会在输出中看到 function(){...
。
如果您不想在输出中看到该函数声明,您可以立即调用该函数。
示例:
(reader.onload = function (e) {
$('#image_upload_preview').attr('src', e.target.result);
})();
这将 return 未定义在表达式的位置。现在如果你想避免undefined
,你可以return你的函数中的一些空字符串。
(reader.onload = function (e) {
$('#image_upload_preview').attr('src', e.target.result);
return '';
})();
现在,由于您已将此函数用作事件的回调,因此立即调用该函数可能无济于事(因为您不会在那里获得 e 参数)。
因此您可以将事件绑定到另一个函数中,例如:
(function(){
reader.onload = function (e) {
$('#image_upload_preview').attr('src', e.target.result);
}
return '';
})();
这将声明绑定到您的 onload
事件并且不会在您的模板文字中留下痕迹的函数。
注:
最好的选择是在模板字面量之外简单地声明函数,然后在字面量中随心所欲地调用它
这是在模板文字中调用函数的方法。
function something() {
return "better than nothing";
}
console.log(`Something is ${something()}.`);
//=> Something is better than nothing.