Введите true && false
и результат будет false
. Это означает, что он проверяет оба условия и печатает второе условие.
Введите true || false
и результатом будет true
. Это означает, что как только первое условие оценивается как true, оно не проверяет второе условие и не печатает первое.
Это объясняет, что печатается.
Ваш первый случай:
При входе true && function() {console.log("aaa");}()
он оценивает второе условие, а также, и так как ваше второе условие является вызываемая функция [вы используете ()
в конце], его результат, т.е. «ааа "печатается.
Не используйте ()
в конце концов то есть ввести true && function() {console.log("aaa");}
и результат будет вашим вторым условием function() {console.log("aaa");}
Ваш второй случай:
При вводе true || function() {console.log("aaa")}()
ваше первое условие само по себе становится правдой, поэтому не оценивая второе условие , поэтому печатается только истинное значение.
Функция выполнена потому, что в конце вашей функции есть скобки. Попробуйте 'true && function() {console.log (" aaa ");}', aaa не отображается. – R3tep
Почему только функция() {console.log ("aaa")}() является синтаксической ошибкой, а добавляет «true &&», исполняемый funciton? – hunter