defaultManager()
调用login()
函数来检查用户是否已登录。登录将返回true
或false
。如果登录为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();
});
答案 0 :(得分:0)
一种技巧是使用AND运算符(&&
)作为快捷方式,并将要执行的其余内容包装在函数中。和&amp;&amp;如果左侧返回一个thruthy值,则operator仅执行右侧。
login() && whenLoggedIn();
function whenLoggedIn(){
// do stuff when login has returned true
}
但是我认为,如果你的情况确实如此,那真是没错。例如,这个技巧没有通过(严格)jslint检查,因为你在第一行没有声明或作业。