首页 > 解决方案 > 使用多个嵌套的 If Else 语句是一种不好的做法吗?

问题描述

我正在尝试为更改密码的界面制作验证器,并且在制作时我意识到我使用了很多if else语句。我想知道是否有更好的方法来做到这一点。

我的代码:

function changePassword() {

  var testPassword = "user";
  var oldPassword = document.getElementById('password-old').value;
  var newPassword = document.getElementById('password-new').value;
  var newPasswordRepeat = document.getElementById('password-new-repeat').value;

  if (oldPassword === testPassword) {
    if (newPassword !== newPasswordRepeat) {
      alert("The passwords don't match");
    } else {
      if (newPassword === "") {
        alert("New password can't be blank");
      } else {
        alert("Password was changed successfully");
      }
    }
  } else {
    alert("Incorrect Password")
  }
}
<label for="password-old">Old Password</label>
<input type="text" id="password-old" />

<label for="password-new">New Password</label>
<input type="text" id="password-new" />

<label for="password-new-repeat">Re-Enter New Password</label>
<input type="text" id="password-new-repeat" />

<input type="button" value="Confirm" onclick="changePassword()" />

有没有更短的方法或者我应该保持原样?

标签: javascripthtml

解决方案


是的。那些嵌套的 if 语句往往会降低可读性。在您的情况下,您可以简单地从方法返回以避免嵌套并使代码更易于理解。

function changePassword() {

  var testPassword = "user";
  var oldPassword = document.getElementById('password-old').value;
  var newPassword = document.getElementById('password-new').value;
  var newPasswordRepeat = document.getElementById('password-new-repeat').value;

  if (oldPassword !== testPassword) {
    alert("Incorrect Password")
    return
  }

  if (newPassword !== newPasswordRepeat) {
    alert("The passwords don't match");
    return;
  }

  if (newPassword === "") {
    alert("New password can't be blank");
  } else {
    alert("Password was changed successfully");
  }

}

推荐阅读