在 JS 中已经使用 return false; 为何后面的代码依然可以执行?

我写了一个验证 手机号码 密码的 函数 如下

function validatePassword(password) {
    if (password.length == 0) {
        swal({
            title: "你好像忘记请填写密码了",
            text: "请输入用户密码",
            timer: 1700,
            showConfirmButton: false,
            type: "error",
        });
        return false;
    }
    if (password.length < 6) {
        swal({
            title: "密码太短了",
            text: "密码长度不能低于6位",
            timer: 1700,
            showConfirmButton: false,
            type: "error",
        });
        return false;
    }

    if (password.length > 16) {
        swal({
            title: "密码太长了",
            text: "密码长度不能高于16位",
            timer: 1700,
            showConfirmButton: false,
            type: "error",
        });
        return false;
    }
}

我调用了这个函数

clipboard.png

按道理如果有错误 下面的 function_name();就不会被执行了?
为什么依然会执行呢?
结果如下

clipboard.png

电子邮件和密码都没有填写 但是却弹出 function_name(); 执行的 内容切覆盖了原先的内容
swal() 函数 是一个美化弹出的库 地址如下 http://www.dglives.com/demo/sweetalert-master/example/

阅读 20.9k
5 个回答

应该这么写, 另外, 这里可以贴代码的

$('#btn_login_email').click(function () {
  var password = $('#email_password').val();
  var email = $('#email').val();

  if (!validatePassword(password)) return;
  if (!validateEmail(email)) return;
  function_name();
});

主函数没有返回,检验函数返回值没有利用

var isValidate = validatePassword(password) ;
if(isValidate){

//do something

}

你只是在validatePassword方法内返回了false,并没有结束click时间啊?可以对validatePassword的返回值进行判断

  • return 只能stop当前函数

  • 要想彻底stop js 只能 throw error

throw new Error("Something went badly wrong!");
  • 还有一种方法能stop js 就是alert。其他函数都stop不了,包括settimeout

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏