javascript - 以下关闭示例未正确返回
问题描述
我正在尝试使用闭包实现下面的 javascript 代码,我得到这样的输出。这里整个函数打印在浏览器中
`function apple(){ var test1 = '
'+ '
'+ ' This is apple'+ '
'+ '
'; return test1; }`
期望的输出:
我只想打印“这是苹果”而不是整个功能。请检查下面的代码。非常感谢任何帮助。
javascript代码
`function init(){
function fruits(){
function apple(){
var test1 = '<div id="main">'+
' <div>'+
' This is apple'+
' </div>'+
'</div>';
return test1;
}
function mango(){
var test2 = '<div id="main">'+
' <div>'+
' This is mango'+
' </div>'+
'</div>';
return test2;
}
return{
apple: apple,
mango: mango
}
}
function print(var1){
document.write(var1)
}
return {
fruits:fruits,
print: print
}
}`
HTML代码:调用javascript代码
`<html>
<head>
<script src="script.js"></script>
</head>
<body>
<script>
//creating object for the main function which is init
var object = init();
//creating object for the function fruits
var fruits = object.fruits();
//passing function apple inside fruits to print function.
//function apple returns html div.
//function print prints the html using document.write
object.print(fruits.apple);
</script>
</body>
</html> `
解决方案
你需要在fruits.apple
某个地方调用,因为它是一个函数。
我建议将呼叫移至print
function init() {
function fruits() {
function apple() {
return '<div id="main"><div>This is apple</div></div>';
}
function mango() {
return '<div id="main"><div>This is mango</div></div>';
}
return { apple, mango };
}
function print(fruit) {
document.write(fruit());
}
return { fruits, print };
}
var object = init(),
fruits = object.fruits();
object.print(fruits.apple);
推荐阅读
- c++ - 是否可以有一个模板化的 c++ 类来通用实现接口 T 并将所有调用转发到实现 T 的包装对象?
- javascript - 如何使用 JS 和 Golang 将视频上传到 Google Drive?
- c# - 控制台应用程序中的 OAuth2 访问令牌
- javascript - 从父组件或祖父组件清除 React 组件中的输入
- vb.net - Blank.Items.Add("Some String Here") Visual Basic
- kubernetes - 如何将 kubernetes pod 暴露给外部 IP?
- azure-iot-hub - 使用模块和调用的方法重新启动 iot edge 运行时
- redux - Redux Obserable - RXjs - If 语句
- angular - 使用角度 9 的 json 正文制作 HTTP 帖子的最佳方法
- html-email - HTML 电子邮件样式/格式