Смотри, ма, без троичного оператора!
Следующее работает, потому что Javascript замыкает логические выражения.
Если something == string1
, то оценить string2
- поскольку string2
является истинным значением, а следующее выражение включает операцию ИЛИ, продолжать не нужно Остановись и вернись string2
.
Если something !== string1
, то он пропустит следующий операнд, потому что если он ложный, нет смысла оценивать следующий операнд (с AND). Он «перейдет» к операции ИЛИ и вернет string1
.
function toggleString(something, string1, string2) {
return something == string1 && string2 || string1;
}
something.val(toggleString(something.val(), "string1", "string2"));
Если вы хотите выполнить задание:
function toggleValue(something, string1, string2) {
something.val(something.val() == string1 && string2 || string1);
}
toggleValue(something, "string1", "string2"); // something is a jQuery collection
Однако, в конце концов, я бы использовал троичный оператор, потому что это решение может быть непонятным для других программистов. Если вы пришли из Java или других языков, вы можете ожидать, что функция вернет логическое значение из-за всех логических операторов.