Javascript初始化和错误处理

Javascript initialisation and error handling

本文关键字:处理 错误 初始化 Javascript      更新时间:2023-09-26

我正在编写一个来自PHP背景的Angular应用程序。初始化和错误处理的标准方法是什么。以我的JWT代币工厂为例。

app.factory('Token', ['jwt_decode', function(jwt_decode) {
    var token = null, expiry = null, role = null;
    return {
        get: function() {
            return token;
        },
        set: function(value) {
            token = value;
            var data = jwt_decode(token);
            expiry = data.exp;
            role = data.role;
        },
        clear: function()
        {
            // performed on session expiry or logout.
            token = null;
            expiry = null;
            role = null;
        },
        has: function()
        {
            return token !== null;
        },
        getRole: function()
        {
            return role;
        },
        getExpiry: function()
        {
            return expiry;
        }
    };
}]);

我已经将我的私有变量初始化为null,但我读过一些博客,这些博客建议我将它们保留为未定义的。如果我将它们保留为未定义,我的clean方法应该将它们设置回未定义或null吗?如果我将它们设置为未定义,我相信我的has函数应该是token!==未定义?

最后,如果传递了一个无效的令牌,例如123应该如何处理,像我在PHP中那样抛出是常见的吗?我在JavaScript中看到了太多错误处理,不知道处理它的最佳方法是什么?

空或未定义是一个风格问题。选择其中一个并保持一致。js中的键测试falsy或thruthy值。那是你的has方法可以返回!!令牌,因此如果该令牌为null或未定义,则"将为false,否则为true。将代码封装在一个自调用的匿名函数中并将undefine作为参数是一种很好的做法,因为它不是js中的保留字,任何人都可以为undefine赋值。

(function(angular, $, undefined){
}(angular,jQuery));

异常处理您必须尝试/catch来处理意外行为,或者您可以抛出错误(抛出"unexpected token")。同样,您可以用try/catch 捕获抛出的错误