diff --git a/typo3/sysext/core/Classes/Configuration/TypoScript/ConditionMatching/AbstractConditionMatcher.php b/typo3/sysext/core/Classes/Configuration/TypoScript/ConditionMatching/AbstractConditionMatcher.php
index fd6a70435641a0b674d4bf0e1661408a88e1ab55..e9d2a77479601b973b5238f51a81b393f15d28ff 100644
--- a/typo3/sysext/core/Classes/Configuration/TypoScript/ConditionMatching/AbstractConditionMatcher.php
+++ b/typo3/sysext/core/Classes/Configuration/TypoScript/ConditionMatching/AbstractConditionMatcher.php
@@ -189,11 +189,14 @@ abstract class AbstractConditionMatcher implements LoggerAwareInterface, Conditi
      */
     protected function evaluateExpression(string $expression): bool
     {
+        // The TypoScript [ELSE] condition is not known by the Symfony Expression Language
+        // and must not be evaluated. If/else logic is handled in TypoScriptParser.
+        if (strtoupper($expression) === 'ELSE') {
+            return false;
+        }
+
         try {
-            $result = $this->expressionLanguageResolver->evaluate($expression);
-            if ($result !== null) {
-                return $result;
-            }
+            return $this->expressionLanguageResolver->evaluate($expression);
         } catch (MissingTsfeException $e) {
             // TSFE is not available in the current context (e.g. TSFE in BE context),
             // we set all conditions false for this case.
diff --git a/typo3/sysext/core/Classes/ExpressionLanguage/Resolver.php b/typo3/sysext/core/Classes/ExpressionLanguage/Resolver.php
index b7a4a881f9fed1abca505b2031fffb2665b603f5..638600cad42018d85e6150884b4964e514eae0e7 100644
--- a/typo3/sysext/core/Classes/ExpressionLanguage/Resolver.php
+++ b/typo3/sysext/core/Classes/ExpressionLanguage/Resolver.php
@@ -76,12 +76,6 @@ class Resolver
      */
     public function evaluate(string $condition): bool
     {
-        // The TypoScript [ELSE] condition is not known by the Symfony Expression Language
-        // and must not be evaluated. If/else logic is handled in TypoScriptParser.
-        if (strtoupper($condition) === 'ELSE') {
-            return false;
-        }
-
         return (bool)$this->expressionLanguage->evaluate($condition, $this->expressionLanguageVariables);
     }
 
diff --git a/typo3/sysext/core/Tests/Unit/Configuration/TypoScript/ConditionMatching/AbstractConditionMatcherTest.php b/typo3/sysext/core/Tests/Unit/Configuration/TypoScript/ConditionMatching/AbstractConditionMatcherTest.php
index f1cad165d33df7258588a978a1c301629dc7b747..61c771a900af30c1de65c994bf691e4ebdbae14b 100644
--- a/typo3/sysext/core/Tests/Unit/Configuration/TypoScript/ConditionMatching/AbstractConditionMatcherTest.php
+++ b/typo3/sysext/core/Tests/Unit/Configuration/TypoScript/ConditionMatching/AbstractConditionMatcherTest.php
@@ -28,6 +28,7 @@ use TYPO3\CMS\Core\Context\Context;
 use TYPO3\CMS\Core\Context\DateTimeAspect;
 use TYPO3\CMS\Core\Core\ApplicationContext;
 use TYPO3\CMS\Core\Core\Environment;
+use TYPO3\CMS\Core\ExpressionLanguage\Resolver;
 use TYPO3\CMS\Core\Http\ServerRequest;
 use TYPO3\CMS\Core\Package\PackageInterface;
 use TYPO3\CMS\Core\Package\PackageManager;
@@ -373,4 +374,18 @@ class AbstractConditionMatcherTest extends UnitTestCase
         $result = $this->evaluateExpressionMethod->invokeArgs($this->conditionMatcher, ['ip("devIP")']);
         self::assertSame($expectedResult, $result);
     }
+
+    /**
+     * @test
+     */
+    public function typoScriptElseConditionIsNotEvaluatedAndAlwaysReturnsFalse(): void
+    {
+        $this->initConditionMatcher();
+        $expressionProperty = new \ReflectionProperty(AbstractConditionMatcher::class, 'expressionLanguageResolver');
+        $expressionProperty->setAccessible(true);
+        $resolverProphecy = $this->prophesize(Resolver::class);
+        $resolverProphecy->evaluate(Argument::cetera())->shouldNotBeCalled();
+        $expressionProperty->setValue($this->conditionMatcher, $resolverProphecy->reveal());
+        self::assertFalse($this->evaluateExpressionMethod->invokeArgs($this->conditionMatcher, ['ELSE']));
+    }
 }
diff --git a/typo3/sysext/core/Tests/Unit/ExpressionLanguage/ResolverTest.php b/typo3/sysext/core/Tests/Unit/ExpressionLanguage/ResolverTest.php
index 8b4032bc6bfa6e1851caee93123ff078c9d5f17a..397eccfc49c9216674efb9571bb5d29a05aacbc0 100644
--- a/typo3/sysext/core/Tests/Unit/ExpressionLanguage/ResolverTest.php
+++ b/typo3/sysext/core/Tests/Unit/ExpressionLanguage/ResolverTest.php
@@ -24,7 +24,6 @@ use TYPO3\CMS\Core\Cache\Frontend\PhpFrontend;
 use TYPO3\CMS\Core\ExpressionLanguage\DefaultProvider;
 use TYPO3\CMS\Core\ExpressionLanguage\FunctionsProvider\DefaultFunctionsProvider;
 use TYPO3\CMS\Core\ExpressionLanguage\Resolver;
-use TYPO3\CMS\Core\Http\ServerRequest;
 use TYPO3\CMS\Core\Package\PackageInterface;
 use TYPO3\CMS\Core\Package\PackageManager;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
@@ -80,21 +79,10 @@ class ResolverTest extends UnitTestCase
      */
     public function basicExpressionHandlingResultsWorksAsExpected(string $expression, $expectedResult)
     {
-        $request = new ServerRequest();
-        $expressionLanguageResolver = new Resolver('default', [], $request);
+        $expressionLanguageResolver = new Resolver('default', []);
         self::assertSame($expectedResult, $expressionLanguageResolver->evaluate($expression));
     }
 
-    /**
-     * @test
-     */
-    public function typoScriptElseConditionIsNotEvaluatedAndAlwaysReturnsFalse()
-    {
-        $request = new ServerRequest();
-        $expressionLanguageResolver = new Resolver('default', [], $request);
-        self::assertFalse($expressionLanguageResolver->evaluate('ELSE'));
-    }
-
     /**
      * @return array
      */
@@ -127,9 +115,8 @@ class ResolverTest extends UnitTestCase
             'varTrue' => true,
             'varFalse' => false,
          ]);
-        $request = new ServerRequest();
         GeneralUtility::addInstance(DefaultProvider::class, $contextProphecy->reveal());
-        $expressionLanguageResolver = new Resolver('default', [], $request);
+        $expressionLanguageResolver = new Resolver('default', []);
         self::assertSame($expectedResult, $expressionLanguageResolver->evaluate($expression));
     }
 
@@ -168,10 +155,9 @@ class ResolverTest extends UnitTestCase
             'var1' => 'FOO',
             'var2' => 'foo'
          ]);
-        $request = new ServerRequest();
         GeneralUtility::addInstance(DefaultProvider::class, $contextProphecy->reveal());
         GeneralUtility::addInstance(DefaultFunctionsProvider::class, $expressionProvider->reveal());
-        $expressionLanguageResolver = new Resolver('default', [], $request);
+        $expressionLanguageResolver = new Resolver('default', []);
         self::assertSame($expectedResult, $expressionLanguageResolver->evaluate($expression));
     }
 }