Проблема с условным условным обозначением - PullRequest
0 голосов
/ 26 апреля 2020

У меня есть это Условное заявление, которое я пытаюсь использовать для краткости.

Как вы можете видеть, когда я вхожу в другое, я не знаю, как заставить passwordMatchError.setAttribute("id", "error") показывать вместе с passwordMatchError.textContent = ("Password does not match. Please retype.");

Я пытался использовать знаки +, | | и &&, но не сработало.

Можете ли вы, ребята, помочь мне?

Большое спасибо.

const checkThePassword = (registration) => {
    let getTheOriginalPassword = registration.password.value; //assign passwords by value, avoid const here in case of unprotected memory
    let getTheRetypedPassword = registration.retypedpassword.value;
    // Simple equality check for retyped password
    getTheOriginalPassword === getTheRetypedPassword ? passwordMatchError.setAttribute("id", "error") :  passwordMatchError.textContent = ("Password does not match. Please retype.");
    // false return is done together with error handling

}

Вот оригинальный код

const checkThePassword = (registration) => {
	let getTheOriginalPassword = registration.password.value; //assign passwords by value, avoid const here in case of unprotected memory
	let getTheRetypedPassword = registration.retypedpassword.value;
	// Simple equality check for retyped password
	if (getTheOriginalPassword === getTheRetypedPassword) {
		return true;
	} else {
		passwordMatchError.setAttribute("id", "error");
		passwordMatchError.textContent = ("Password does not match. Please retype.");
		return false; // false return is done together with error handling
	}
}

Ответы [ 2 ]

1 голос
/ 26 апреля 2020

Если вы хотите сложить sh все это в одну строку с условным оператором, это возможно, потому что назначения оцениваются выражениями (к сожалению), но это довольно нечитаемо, я настоятельно рекомендую против этого:

getTheOriginalPassword === getTheRetypedPassword
  ? '' // do nothing... unused expression
  : ( // squash two "statements" which can be evaluated as expressions into a single expression:
    passwordMatchError.setAttribute("id", "error"), // use the comma operator
    passwordMatchError.textContent = ("Password does not match. Please retype.")
  )

Это синтаксически допустимо и будет делать то, что вы ищете, но это ужасный код. Попробуйте вместо этого использовать свой оригинальный код. Лучше всего использовать условный оператор, только если вы хотите условно построить выражение - если вы хотите условно выполнить операторов , используйте if / else.

1 голос
/ 26 апреля 2020

Вы можете заключить возвращаемые части в скобки и вернуть, наконец, логическое значение.

Пожалуйста, используйте явное программирование с оператором if!

const checkThePassword = (registration) => {
    let getTheOriginalPassword = registration.password.value; //assign passwords by value, avoid const here in case of unprotected memory
    let getTheRetypedPassword = registration.retypedpassword.value;
    // Simple equality check for retyped password
    return getTheOriginalPassword === getTheRetypedPassword
        ? (passwordMatchError.setAttribute("id", "error"), true)
        : (passwordMatchError.textContent = ("Password does not match. Please retype."), false);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...