Javascript - 为什么方法变量在回调中存活?

P.B*_*key 2 javascript

说你有[ 小提琴 ]

function TestMethod() {
    var lifespan = "blah";

    $.ajax({
        url: "http://www.google.com",
        success: function (data) {
            alert(lifespan);
        },
        error: function (errorData) {
            alert(lifespan);
        },
        dataType: 'html'
    });
}
Run Code Online (Sandbox Code Playgroud)

lifespan当回调触发时,为什么它仍然存在?通过异步调用还能持续什么?是什么允许这种情况发生,是否存在某种"运行时",如果你愿意的话,在javascript中使代码在进程中保持活动状态?如果是这样,什么时候知道什么时候开始让内存物品死掉?

Kri*_*use 5

Javascript具有函数范围,而不是像C,C++,C#,PHP和Java那样的块范围(大括号).

这是jsFiddle的例子 -

http://jsfiddle.net/Wrz6X/