Javascript 范围界定

Javascript 范围界定,javascript,node.js,pug,Javascript,Node.js,Pug,在我的Jade模板中使用局部变量时,我在作用域方面有问题。我的代码是 function(req, res) { BlogPostModel.find({}, function(e, data) { if (e) throw e; posts = data; var path = __dirname + "/view/admin/blog.jade", template = fs.readFileSync(path

在我的Jade模板中使用局部变量时,我在作用域方面有问题。我的代码是

function(req, res) {
    BlogPostModel.find({}, function(e, data) {
        if (e) throw e;

        posts = data;

        var path = __dirname + "/view/admin/blog.jade",
            template = fs.readFileSync(path, "utf8"),
            options = { filename: path },
            fn = jade.compile(template, options),
            html = fn(posts);

        res.end(html);
});
上面的代码呈现得很好,但我必须将“data”设置为全局变量。我宁愿将“数据”直接传递到我的函数调用中。但当我这样做时,我从Jade得到一个“变量未定义”错误。有人能告诉我为什么“数据”超出范围吗

谢谢


FBZ

所以这根本不是一个范围问题。我不得不称我的论点为“本地人”。像这样

BlogPostModel.find({}, function(e, locals) {
    if (e) throw e;
    var path = __dirname + "/view/admin/blog.jade",
        template = fs.readFileSync(path, "utf8"),
        options = { filename: path },
        fn = jade.compile(template, options),
        html = fn(locals);

    res.end(html);
});
Jade接受任何名称的全局变量似乎很奇怪,但局部变量必须称为“locals”。不管怎样,已经分类了