关于jQuery的奇怪输出

关于jQuery的奇怪输出,jquery,Jquery,为什么两个输出消息是相同的:“不是在脸上!”; “foo”结尾中的第一条消息不是指“Spoon!”? 为什么不呢? 请有人解释一下。我不理解教程的解释。当点击foo时,它会提醒消息的最后一个值,这将是“不在脸上!”因为这行代码在页面加载时已经执行。当点击foo时,它会提醒消息的最后一个值,这将是“不在脸上!”因为这行代码在加载页面时已经执行。这是因为事件处理程序是异步启动的。 而您正在设置的消息值是在第一个线程中完成的 因此,基本上你的程序将读取你的全部代码,将值设置为'Spoon!',然后是您

为什么两个输出消息是相同的:“不是在脸上!”; “foo”结尾中的第一条消息不是指“Spoon!”? 为什么不呢?
请有人解释一下。我不理解教程的解释。

当点击
foo
时,它会提醒
消息的最后一个值,这将是“不在脸上!”因为这行代码在页面加载时已经执行。

当点击
foo
时,它会提醒
消息的最后一个值,这将是“不在脸上!”因为这行代码在加载页面时已经执行。

这是因为事件处理程序是异步启动的。 而您正在设置的消息值是在第一个线程中完成的

因此,基本上你的程序将读取你的全部代码,将值设置为
'Spoon!',然后是您设置的最后一个
“不在脸上!”。然后,当您单击任一按钮时,它将提示消息值“不在脸上!”

尝试将消息放入函数中,然后您将看到每个函数的不同消息。这将如您所期望的那样工作,因为您还异步设置了值

var message = 'Spoon!';
$('#foo').bind('click', function() {
alert(message);
});

message = 'Not in the face!';
$('#bar').bind('click', function() {
alert(message);
});

这是因为事件处理程序是异步启动的。 而您正在设置的消息值是在第一个线程中完成的

因此,基本上你的程序将读取你的全部代码,将值设置为
'Spoon!',然后是您设置的最后一个
“不在脸上!”。然后,当您单击任一按钮时,它将提示消息值“不在脸上!”

尝试将消息放入函数中,然后您将看到每个函数的不同消息。这将如您所期望的那样工作,因为您还异步设置了值

var message = 'Spoon!';
$('#foo').bind('click', function() {
alert(message);
});

message = 'Not in the face!';
$('#bar').bind('click', function() {
alert(message);
});

只有函数绑定才会发生。当点击事件发生时,代码的实际执行才会发生。当点击事件发生时,消息变量将显示其最后一个值,该值为“非正面”

只有函数绑定才会发生。当点击事件发生时,代码的实际执行才会发生。当点击事件发生时,消息变量将显示其最后一个值,该值为“非正面”

请阅读-25%不好…请阅读-25%不好…谢谢您,SpYk3HH。我得到了它!谢谢你,世爵。我得到了它!哦我得到了它。。。编译器首先将变量“message”设置为“notin The face!”。当两个按钮中的一个被触发时,它会得到“不在脸上”的值。对吗?谢谢你的回答!哦我得到了它。。。编译器首先将变量“message”设置为“notin The face!”。当两个按钮中的一个被触发时,它会得到“不在脸上”的值。对吗?谢谢你的回答!
$('#foo').bind('click', function() {
  var message = 'Spoon!';
  alert(message);
});

$('#bar').bind('click', function() {
  var message = 'Not in the face!';
  alert(message);
});