Javascript将函数返回为变量

Javascript making the return of a function into a variable

本文关键字:变量 返回 函数 Javascript      更新时间:2023-09-26

如何使此app.locals.user成为返回值而不是函数?现在我必须运行app.locals.user().name.

我怎样才能让它跑app.locals.user.name

    app.locals.user = function(){
            if(typeof(req.session.user) != 'undefined'){
                console.log(req.session.user.name.full);
                return req.session.user;
            }else{
                return false;
            }
        };

只是return whateverVariable;

Javascript不是类型化的,所以你不能真正做任何事情来把它放在函数签名中。

function foo() {
    var x = { a : 10, b : 20};
    return x;
}
var y = foo();
debug(y.a);  //prints 10

好吧,您可以使用__defineGetter__:

app.locals.__defineGetter__("user", function() {
    if(typeof(req.session.user) != 'undefined') {
        console.log(req.session.user.name.full);
        return req.session.user;
    } else {
        return false;
    }
});

编辑:__defineGetter__似乎已被弃用,这里有一个更好的方法:

Object.defineProperty(app.locals, "user", { get : function() {
    if(typeof(req.session.user) != 'undefined') {
        console.log(req.session.user.name.full);
        return req.session.user;
    } else {
        return false;
    }
});

您可以立即执行该函数,以便将结果存储为变量:

 app.locals.user = (function(){
            if(typeof(req.session.user) != 'undefined'){
                console.log(req.session.user.name.full);
                return req.session.user;
            }else{
                return false;
            }
        })();