У меня есть исходный код:
function findMessageErrors(btn) {
var error = "";
var message = $(btn).parent().siblings().find("textarea[name='message']").val();
if (message === "") {
error += "*Please enter a message.<br/>";
}
if (!$(btn).parent().siblings().find('input[name="agree"]').prop('checked')) {
error += "*Please agree.<br/>";
}
return error;
}
Это минифицировано. После минификации это выглядит так на вкладке Источники инструментов Chrome Dev:
function findMessageErrors(btn) {
var error = "";
return "" === $(btn).parent().siblings().find("textarea[name='message']").val() && (error += "*Please enter a message.<br/>"),
$(btn).parent().siblings().find('input[name="agree"]').prop("checked") || (error += "*Please agree.<br/>"),
error
}
Я понимаю, как оператор запятой "выполняет серию выражений по порядку, а затем возвращает результат последнего из них" (отсюда). Но мне трудно понять, как эти операторы OR и AND работают при построении той строки, которая возвращается в минифицированном коде.
Есть ли у кого-нибудь полезный способ прочитать это вслух, который поможет мне понять, как это работает? Думаю, я не вижу, как 2 независимых оператора IF в исходном коде минифицируются в серию && then ||. Я не хочу искать источник каждый раз, когда хочу понять логику работы минифицированного кода.