From 1bd12b70b8feee3216f50ec38e0c009a6945f91e Mon Sep 17 00:00:00 2001 From: Vlad Esin <44160260+svetley1@users.noreply.github.com> Date: Fri, 13 Sep 2019 16:38:14 +0500 Subject: [PATCH 1/2] Short-circuit evaluation and return for && | | MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1) && возвращает первый операнд который привелся к false. Если такового не оказалось, то возвращается последний операнд (истинный). 2 && 0 && 'string' => 0 '' && 4 => '' 0 && 6 => 0 4 && 3 => 3 2) || возвращает первый операнд который привелся к true. Если такового не оказалось, то возвращается последний операнд (ложный). '' || 4 => 4 0 || 6 => 6 4 || 3 => 4 '' || 0 || null => null Так же следует отметить, что используются 'short-circuit evaluation', то есть функция f() в примере ниже не исполнится. '' || true || f() => true --- Javascript/2-logical-operators.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Javascript/2-logical-operators.js b/Javascript/2-logical-operators.js index c0d8588..b46d9fb 100644 --- a/Javascript/2-logical-operators.js +++ b/Javascript/2-logical-operators.js @@ -16,6 +16,12 @@ console.log('Mix of Tea AND Juice is ' + goodDrinks); console.log('Mix of Vodka AND Beer is ' + badDrinks); console.log('Mix of Vodka AND Juice is ' + badMix); +const logicalAndFirstFalse = 'string' && 0 && 10; // 0 +console.log('\'string\' && 0 && 10 => ' + logicalAndFirstFalse) + +const logicalAndLastTrue = 'string' && 5 && 10; // 10 +console.log('\'string\' && 5 && 10 => ' + logicalAndLastTrue) + const engine1 = true; const engine2 = false; @@ -27,6 +33,12 @@ console.log('The first engine works? - ' + engine1); console.log('The second engine works? - ' + engine2); console.log('Is the plane still flying? - ' + fly); +const logicalOrFirstTrue = 'string' || 0 || 10; // 'string' +console.log('\'string\' || 0 || 10 => ' + logicalOrFirstTrue) + +const logicalOrLastFalse = '' || null || 0; // 0 +console.log('\'\' || null || 0 => ' + logicalOrLastFalse) + const happy = true; const mood = !happy; // false From e708a12f3dfcc8a8a2a1600d780a25bb03ecb5b0 Mon Sep 17 00:00:00 2001 From: Vlad Esin <44160260+svetley1@users.noreply.github.com> Date: Fri, 13 Sep 2019 22:30:03 +0500 Subject: [PATCH 2/2] Code style --- Javascript/2-logical-operators.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Javascript/2-logical-operators.js b/Javascript/2-logical-operators.js index b46d9fb..0075455 100644 --- a/Javascript/2-logical-operators.js +++ b/Javascript/2-logical-operators.js @@ -17,10 +17,10 @@ console.log('Mix of Vodka AND Beer is ' + badDrinks); console.log('Mix of Vodka AND Juice is ' + badMix); const logicalAndFirstFalse = 'string' && 0 && 10; // 0 -console.log('\'string\' && 0 && 10 => ' + logicalAndFirstFalse) +console.log('\'string\' && 0 && 10 => ' + logicalAndFirstFalse); const logicalAndLastTrue = 'string' && 5 && 10; // 10 -console.log('\'string\' && 5 && 10 => ' + logicalAndLastTrue) +console.log('\'string\' && 5 && 10 => ' + logicalAndLastTrue); const engine1 = true; const engine2 = false; @@ -34,10 +34,10 @@ console.log('The second engine works? - ' + engine2); console.log('Is the plane still flying? - ' + fly); const logicalOrFirstTrue = 'string' || 0 || 10; // 'string' -console.log('\'string\' || 0 || 10 => ' + logicalOrFirstTrue) +console.log('\'string\' || 0 || 10 => ' + logicalOrFirstTrue); const logicalOrLastFalse = '' || null || 0; // 0 -console.log('\'\' || null || 0 => ' + logicalOrLastFalse) +console.log('\'\' || null || 0 => ' + logicalOrLastFalse); const happy = true;