为什么我的js函数返回而不是返回值? [角]

时间:2015-05-04 23:46:32

标签: javascript angularjs

我必须遗漏一些显而易见的东西,但我无法弄清楚它是否会让我发疯。我使用棱角分明,我有一个工厂' Auth'在“Auth”的返回{}中具有此功能(强调强制返回虚假):

isAuthenticated: function() {
            var storedJwt = $window.sessionStorage.authToken;
            console.log('stored JWT: '+storedJwt);
            if(storedJwt){
                var storedPayload = jwtHelper.decodeToken(storedJwt);
                console.log('payload: '+JSON.stringify(storedPayload));
                if(jwtHelper.isTokenExpired(storedJwt)){
                    console.log('is expired expired: '+jwtHelper.getTokenExpirationDate(storedJwt));

                    delete $window.sessionStorage.authToken;
                } else {
                    console.log('is not expired expires: '+jwtHelper.getTokenExpirationDate(storedJwt));    
                }
            }

            return false;
            //LocalService.get('authToken');
        },

然后在控制器中我这样做:

$scope.isLoggedIn = function(){
    console.log('chk:'+Auth.isAuthenticated);
    return Auth.isAuthenticated;
};

console.log虽然显示:http://grab.by/GZSw

所以总是返回true。为什么我不能把它弄错?我认为这可能是非常基本的问题,但我不明白。

2 个答案:

答案 0 :(得分:4)

您需要使用parens调用该函数。

$scope.isLoggedIn = function(){
    console.log('chk:'+Auth.isAuthenticated());
    return Auth.isAuthenticated();
};

答案 1 :(得分:3)

Auth.isAuthenticated是对不调用函数的函数的引用

因此,它总是很简单,从不调用函数......它现在只是一个对象

如果你想要从函数内部返回值,你需要调用它

return Auth.isAuthenticated();

有人说,函数中有条件不返回任何内容,函数本身在

中永远不会返回true