Javascript变量范围(?)

Squ*_*cus 1 javascript scope

我的老板命令我在我们正在开发的网站上添加一些Javascript到几页.我是一个完整的Javascript noob(我心里都是PHP编码器),但我一直在学习和使用Javascript两天,直到现在,一切都进展顺利.

现在我遇到了一个问题.我认为它与变量范围有关,我认为我理解变量范围,但我正在努力完成这个非常简单的任务.如果我有更多的时间来学习如何使用JS,那么在向你们提供帮助之前,我会更多地反对它,但是我需要在下周一之前完成一些工作.快到了..

代码如下,进一步说明如下.

var activeTopic;
$.post("test.php",
    {
        request:"getActiveSection",
        courseid:courseid
    },
    function (data, status) {
        if (data != "none") {
            activeTopic = data;
            displayActiveTopic();
        }
    });
alert(activeTopic);
Run Code Online (Sandbox Code Playgroud)

我正在使用Jquery的POST函数来调用test.php.PHP获取课程ID并返回当前活动的主题.PHP代码返回正确的值.我知道这一点,因为如果我提醒(数据);,则会显示正确的值.

但是,如果我提醒(activeTopic); 在函数外部,我注意到全局变量activeTopic没有改变.为什么?

在此先感谢您的帮助.当我有时间的时候,我会更多地投入学习JS.到目前为止它非常有趣......与PHP非常不同,但仍然很有趣.

Que*_*tin 5

这与范围无关,与时间有关.

  1. 你声明一个变量activeTopic.
  2. 您发送HTTP(发布)请求
  3. 你警觉 activeTopic

稍后, HTTP 响应到达时,将分配一个值activeTopic.

您需要处理当前为其分配值的回调函数的数据activeTopic.