如何打破下一行执行而不检查使用if else?

时间:2016-10-19 07:05:50

标签: jquery module

defaultManager()调用login()函数来检查用户是否已登录。登录将返回truefalse。如果登录为login(),有defaultManager()函数可以阻止进一步执行false吗?

返回false只会停止login函数本身下方的任何内容,但我想停止login()中对defaultManager()的调用之下的任何内容。

可用的方法是,存储登录返回的值并使用if..else来确定要采取的步骤。但我宁愿不使用if else ..

jQuery(document).ready(function($) {     
    var myModule =  (function(sendTo) {    
        var self = {
            init: function() {    
                self.defaultManager();                      
            },    
            login: function() {                     
                var userId = this.getSetting('userId');    
                if (userId < 0) {
                    return false;
                }    
                return true;
            },    
            getSetting: function(requiredSetting) {    
                var settings  = JSON.parse(sessionStorage.getItem('conversekitGlobalSettings'));
                return settings[requiredSetting];
            },    
            defaultManager: function() {
               //i prefer not to do this
               var login =this.login();

               if (login == 1) {
                  //do this
               } else {
                  //do this
               }

                //is this can be done?
               this.login();
               //must not execute whatever written here if call
               //to the login() is false                         
            }
        };    
        return self;            
    })(interface);    
    myModule.init();
});

1 个答案:

答案 0 :(得分:0)

一种技巧是使用AND运算符(&&)作为快捷方式,并将要执行的其余内容包装在函数中。和&amp;&amp;如果左侧返回一个thruthy值,则operator仅执行右侧。

login() && whenLoggedIn();

function whenLoggedIn(){
  // do stuff when login has returned true
}

但是我认为,如果你的情况确实如此,那真是没错。例如,这个技巧没有通过(严格)jslint检查,因为你在第一行没有声明或作业。