如何使用javascript从外部函数访问内部函数的属性

时间:2017-10-11 22:09:31

标签: javascript this scoping

我在函数的全局级别声明了变量,最​​终在内部函数中进行了更改,我希望将更改的变量值作为外部函数的值返回,但是当前获取undefined.Plz提供了指导。

function checkResult(req){
    let result = true;
    Reservation.find({result_date: req.body.res_date}, function (err,doc) {
        if (err) {console.log(err);}
        else if (reservations) {
         result = false;
         console.log(result);       
        }
    })
    console.log("Final:");
    return result; // undefined error
}

2 个答案:

答案 0 :(得分:0)

你应该使用回调。

例如:

checkResult(req, function(result){
    console.log(result); // prints the boolean
});

然后使用这样的函数:

SELECT itemname, 'Brand1' AS brand
FROM maintable
WHERE brand1 = 'Y'
UNION ALL
SELECT itemname, 'Brand2'
FROM maintable
WHERE brand2 = 'Y'
UNION ALL
SELECT itemname, 'Brand3'
FROM maintable
WHERE brand3 = 'Y'
UNION ALL
SELECT itemname, 'Brand4'
FROM maintable
WHERE brand4 = 'Y'
UNION ALL
SELECT itemname, 'Brand5'
FROM maintable
WHERE brand5 = 'Y'
UNION ALL
SELECT itemname, 'Brand6'
FROM maintable
WHERE brand6 = 'Y'
UNION ALL
SELECT itemname, 'Brand7'
FROM maintable
WHERE brand7 = 'Y'
UNION ALL
SELECT itemname, 'Brand8'
FROM maintable
WHERE brand8 = 'Y'
UNION ALL
SELECT itemname, 'Brand9'
FROM maintable
WHERE brand9 = 'Y'

答案 1 :(得分:0)

Reservation.find看起来接受一个在完成时调用的回调。 如果Reservation.find是异步的,那么checkResult告诉Reservation.find开始执行,然后会立即返回resultundefined)。

换句话说,return result;正在 result = false;之前执行,因为匿名函数function (err,doc)内的所有内容都发生在函数执行流程之外。< / p>

尝试在回调中执行任何需要result的操作(function (err,doc)阻止)。

编辑:Kenji Mukai在下面显示的内容