javascript - 使用多个嵌套的 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()" />
有没有更短的方法或者我应该保持原样?
解决方案
是的。那些嵌套的 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");
}
}
推荐阅读
- mysql - Wrong Create Value in SQL
- amazon-web-services - AWS No space left on device
- c# - Sending Email using Gmail Api in dot net with Multiple gmail accounts and without using SMTP link, without port
- c++ - C++ 动态二维数组到 OpenCV Mat
- java - Axon message types
- php - How to send file access url for a file stored in google drive to client in laravel?
- java - How to send array value for one the key for rest assured request
- c# - How to make a camera to follow the player like it is attached by chain?
- python - How can I download Images by selenium?
- mongodb - convert child collection's _id to string using $set