我在myFunc
内拨打了myFunc2
。现在,当我使用回调概念调用var2
时,我想要打印myFunc2
。我知道有些事情是错的。我试过的代码不起作用。
显示此错误:
未捕获的ReferenceError:未定义newfunc(...)
我该如何解决?
CODE:
<html>
<head>
<title></title>
<script>
function myFunc(parameter){
var var2="another thing";
newfunc(var2);
}
function myFunc2(){
var var1="Something";
myFunc(newfunc(some));
console.log(var1);
console.log(var2);
}
</script>
</head>
<body>
<button onclick="myFunc2()">BUTTON</button>
</body>
</html>
编辑:
根据评论,我没有违抗newfunc()
。现在我已经定义了它。但它不起作用。
<script>
function myFunc2(){
var var1="Something";
myFunc(function newfunc(some){
console.log(var2);
});
console.log(var1);
}
function myFunc(parameter){
var var2="another thing";
newfunc(var2);
}
</script>
答案 0 :(得分:0)
这是它的工作方式:
var a = function myFunc(parameter){
var var2="another thing";
parameter.call();
}
a(function(){console.log("the function parameter")})
答案 1 :(得分:0)
我不确定你想要实现的目标。是这样的吗?
var var2;
function myFunc(parameter){
var2="another thing";
return var2;
}
function myFunc2(){
var var1="Something";
myFunc(var1);
console.log(var1);
console.log(var2);
}
&#13;
<button onclick="myFunc2()">BUTTON</button>
&#13;
您可以查看Fiddle
答案 2 :(得分:0)
函数无法共享在各自范围内定义的变量,但可以使用arguments
和return
值共享其值。这是2个功能如何说话。
还要记住,当您在函数名称后添加()
时,会立即调用它。如果您需要传递回调,则必须传递引用(functionName
)。
您可以参考以下帖子:Passing parameters to a callback function了解更多信息。
function newfunc(str){
return "The test String is: " + str;
}
function myFunc(callback) {
var var2 = "another thing";
// return value
return callback(var2);
}
function myFunc2() {
var var1 = "Something";
// Accept value that is returned and save it in local variable
// Also adding "()" after function name will call it and pass its return value as argument.
// If you even need to pass reference of a function with callback, use `.bind(context, args)`
var var2 = myFunc(newfunc);
console.log(var1);
console.log(var2);
}
<button onclick="myFunc2()">BUTTON</button>
首先,在()
中定义函数将使其成为表达式,并且不会保留其引用。因此,您的功能仍然无法访问。
其次,当您将函数作为回调传递时,它的引用是共享的,并且可以通过参数名称获得。在您的情况下parameter
。因此,而不是newfunc(var2)
做parameter(var2)
第三,var2
内不存在newfunc
。您正在使用参数(some
)共享价值。用它来记录。
function myFunc2() {
var var1 = "Something";
// Here newfunc will be ddestroyed after the call as it is wrapped inside ()
myFunc(function newfunc(some) {
console.log(some);
});
console.log(var1);
}
function myFunc(parameter) {
var var2 = "another thing";
parameter(var2);
}
myFunc2();