search

Home  >  Q&A  >  body text

javascript - 在 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;
    }
}

我调用了这个函数

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

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

阿神阿神2896 days ago447

reply all(5)I'll reply

  • 高洛峰

    高洛峰2017-04-10 17:37:36

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

    $('#btn_login_email').click(function () {
      var password = $('#email_password').val();
      var email = $('#email').val();
    
      if (!validatePassword(password)) return;
      if (!validateEmail(email)) return;
      function_name();
    });

    reply
    0
  • PHP中文网

    PHP中文网2017-04-10 17:37:36

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

    reply
    0
  • 阿神

    阿神2017-04-10 17:37:36

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

    //do something

    }

    reply
    0
  • 黄舟

    黄舟2017-04-10 17:37:36

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

    reply
    0
  • 迷茫

    迷茫2017-04-10 17:37:36

    • return 只能stop当前函数

    • 要想彻底stop js 只能 throw error

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

    reply
    0
  • Cancelreply