javascript - 在 JS 中已经使用 return false; 为何后面的代码依然可以执行?
阿神
阿神 2017-04-10 17:35:36
0
5
457

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

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/

阿神
阿神

闭关修行中......

全部回复(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();
});
Ty80

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

阿神

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板