javascript中的回调问题
我在玩回调时遇到了这个问题,不确定它与回调有多大关系,但我无法解释结果,任何帮助都将不胜感激 结果是什么:javascript中的回调问题,javascript,function,callback,Javascript,Function,Callback,我在玩回调时遇到了这个问题,不确定它与回调有多大关系,但我无法解释结果,任何帮助都将不胜感激 结果是什么:'hi samsamsamsam' 我希望:“你好,山姆” 当我打电话给addSam(speak)时, 控制台返回: “你好,山姆” 为什么name+=“sam”会出现多次 我应该如何更改代码,使其只发生一次,并且可以简单地输出: hi sam这是因为变量name是在addSam函数中定义的,因此它只能在该函数中访问,不能全局访问 如果您希望函数在调用时输出hi sam,addSam(sp
'hi samsamsamsam'
我希望:“你好,山姆”
当我打电话给addSam(speak)时, 控制台返回:
“你好,山姆”
为什么name+=“sam”会出现多次
我应该如何更改代码,使其只发生一次,并且可以简单地输出:
hi sam
这是因为变量name
是在addSam
函数中定义的,因此它只能在该函数中访问,不能全局访问
如果您希望函数在调用时输出hi sam
,addSam(speak)
,请在函数外部定义name
变量,以便全局访问。像这样:
var name = '';
function addSam(cb){
setTimeout(function(){
name += 'sam';
cb();
}, 1000);
}
function speak(){
console.log('hi ' + name);
}
addSam(speak); // outputs 'hi sam' after a second
这是因为变量
name
是在addSam
函数中定义的,因此它只能在该函数中访问,不能全局访问
如果您希望函数在调用时输出hi sam
,addSam(speak)
,请在函数外部定义name
变量,以便全局访问。像这样:
var name = '';
function addSam(cb){
setTimeout(function(){
name += 'sam';
cb();
}, 1000);
}
function speak(){
console.log('hi ' + name);
}
addSam(speak); // outputs 'hi sam' after a second
您的代码将只打印
“hi”
。我敢肯定这是不可能的,至少你发了代码。我很确定你还有别的东西,你不能在这里摆姿势。或者您缺少var name=''代码>在您的真实代码中。对不起,我应该已经清楚了,我运行:addSam(speak)在这之后,这会在控制台中打印出“hi samsamsam”。您的代码将只打印“hi”
。我敢肯定这是不可能的,至少你发了代码。我很确定你还有别的东西,你不能在这里摆姿势。或者您缺少var name=''代码>在你的真实代码中。对不起,我应该已经清楚了,我运行:addSam(speak)在这个结尾,它在控制台中打印出“hi samsam”
function addSam(cb){
var name = '';
setTimeout(function(){
name += 'sam';
cb(name);
}, 1000);
}
function speak(name){
console.log('hi ' + name);
}