【问题标题】:Javascript initialisation and error handlingJavascript初始化和错误处理
【发布时间】:2015-03-21 17:06:50
【问题描述】:

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

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?如果我将它们设置为 undefined 我相信我的 has 函数应该是 token !== undefined?

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

【问题讨论】:

    标签: javascript angularjs error-handling initialization standards


    【解决方案1】:

    Null 或 undefined 是样式问题。选择其中之一并保持一致。 js 中的 key 测试 falsy 或 thruthy 值。那就是你的 has 方法可以返回 !!token,所以如果 token 为 null 或 undefined 或者 '' 将是假的,否则为真。 将代码包装在自调用匿名函数中并将 undefined 作为参数是一个很好的做法,因为它不是 js 中的保留字,任何人都可以为 undefined 赋值。

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

    异常处理你有 try/catch 来处理意外行为,或者你可以抛出错误(抛出'Unexpected token')。再次,您可以捕获使用 try/catch 抛出的错误

    【讨论】:

    • 请问您采用的是哪两种方法?
    • 我做了我刚才告诉你的一切 :-) 有时可能会更好地抛出一个有意义的错误以便你可以调试,try/catch 是为了防止你的用户看到任何奇怪的东西控制台或用户界面上的消息
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-29
    • 1970-01-01
    • 2014-05-01
    • 1970-01-01
    • 2021-01-26
    相关资源
    最近更新 更多