diff options
author | Florian Merz <me@fiji-flo.de> | 2021-02-11 14:51:47 +0100 |
---|---|---|
committer | Florian Merz <me@fiji-flo.de> | 2021-02-11 14:51:47 +0100 |
commit | daa1a2aff136fa9da1fcc97d7da97a2036fabc77 (patch) | |
tree | 026b16ef36fc7349d94d983405ae72ef6cb42120 /files/uk/web/javascript/reference/operators/logical_operators | |
parent | 8260a606c143e6b55a467edf017a56bdcd6cba7e (diff) | |
download | translated-content-daa1a2aff136fa9da1fcc97d7da97a2036fabc77.tar.gz translated-content-daa1a2aff136fa9da1fcc97d7da97a2036fabc77.tar.bz2 translated-content-daa1a2aff136fa9da1fcc97d7da97a2036fabc77.zip |
unslug uk: move
Diffstat (limited to 'files/uk/web/javascript/reference/operators/logical_operators')
-rw-r--r-- | files/uk/web/javascript/reference/operators/logical_operators/index.html | 253 |
1 files changed, 0 insertions, 253 deletions
diff --git a/files/uk/web/javascript/reference/operators/logical_operators/index.html b/files/uk/web/javascript/reference/operators/logical_operators/index.html deleted file mode 100644 index ea1edb506a..0000000000 --- a/files/uk/web/javascript/reference/operators/logical_operators/index.html +++ /dev/null @@ -1,253 +0,0 @@ ---- -title: Логічні оператори -slug: Web/JavaScript/Reference/Operators/Logical_Operators -tags: - - JavaScript - - Оператор - - логічний -translation_of: Web/JavaScript/Reference/Operators -translation_of_original: Web/JavaScript/Reference/Operators/Logical_Operators ---- -<div>{{jsSidebar("Operators")}}</div> - -<p>Логічні оператори зазвичай застосовуються до {{jsxref("Boolean", "булевих")}} (логічних) значень. В цьому випадку вони повертають значення типу Boolean. Однак, оператори <code>&&</code> та <code>||</code> насправді повертають значення одного з заданих операндів, тому, якщо ці оператори використовуються зі значеннями не булевого типу, вони повернуть значення не булевого типу.</p> - -<div>{{EmbedInteractiveExample("pages/js/expressions-logicaloperator.html")}}</div> - - - -<h2 id="Опис">Опис</h2> - -<p>Логічні оператори описані у наведеній нижче таблиці (вирази <code><em>expr</em></code> можуть належати до будь-якого <a href="/uk/docs/Glossary/Data_structure">типу</a>, не лише булевого):</p> - -<table class="fullwidth-table"> - <tbody> - <tr> - <th>Оператор</th> - <th>Синтаксис</th> - <th>Опис</th> - </tr> - <tr> - <td>Логічне І (<code>&&</code>)</td> - <td><code><em>expr1</em> && <em>expr2</em></code></td> - <td>Якщо вираз <code>expr<strong>1</strong></code> може бути приведений до <code>true</code>, вертає <code>expr<strong>2</strong></code>; інакше, вертає <code>expr<strong>1</strong></code>.</td> - </tr> - <tr> - <td>Логічне АБО (<code>||</code>)</td> - <td><code><em>expr1</em> || <em>expr2</em></code></td> - <td>Якщо вираз <code>expr<strong>1</strong></code> може бути приведений до <code>true</code>, вертає <code>expr<strong>1</strong></code>; інакше, вертає <code>expr<strong>2</strong></code>.</td> - </tr> - <tr> - <td>Логічне НЕ (<code>!</code>)</td> - <td><code>!<em>expr</em></code></td> - <td>Вертає <code>false</code>, якщо його єдиний операнд може бути приведений до <code>true</code>; інакше, вертає <code>true</code>.</td> - </tr> - </tbody> -</table> - -<p>Якщо значення може бути приведене до <code>true</code>, то воно називається {{Glossary("truthy","правдивим")}}. Якщо значення може бути приведене до <code>false</code>, воно називається {{Glossary("falsy","хибним")}}.</p> - -<p>Приклади виразів, які можуть бути приведені до false:</p> - -<ul> - <li><code>null</code>;</li> - <li><code>NaN</code>;</li> - <li><code>0</code>;</li> - <li>порожній рядок (<code>""</code>, або <code>''</code>, або <code>``</code>);</li> - <li><code>undefined</code>.</li> -</ul> - -<p>Хоча оператори <code>&&</code> та <code>||</code> можуть використовуватись з операндами не булевого (логічного) типу, вони все одно можуть вважатися логічними операторами, оскільки значення, які вони повертають, завжди можуть бути приведені до <a href="/uk/docs/Web/JavaScript/Data_structures#Тип_boolean">булевих примітивів</a>. Щоб явно перетворити повернені значення (або, взагалі, будь-який вираз) до відповідного булевого значення, скористайтесь подвійним <a href="/uk/docs/Web/JavaScript/Reference/Operators/Logical_Operators#Logical_NOT">оператором НЕ</a> або конструктором <a href="/uk/docs/Web/JavaScript/Reference/Global_Objects/Boolean">Boolean</a>.</p> - -<h3 id="Коротке_замикання_обчислення">Коротке замикання обчислення</h3> - -<p>Оскільки логічні вирази обчислюються зліва направо, вони перевіряються на можливе "коротке замикання" обчислення за наступними правилами:</p> - -<ul> - <li><code>(якийсь хибний вираз) && <em>expr</em></code> обчислюється як хибний вираз;</li> - <li><code>(якийсь правдивий вираз) || <em>expr</em></code> обчислюється як правдивий вираз.</li> -</ul> - -<p>Коротке замикання означає, що наведені вирази <em>expr</em> <strong>не обчислюються</strong>, тому будь-які побічні ефекти від цього не відбудуться (наприклад, якщо <em>expr</em> є викликом функції, виклик не відбувається). Це відбувається тому, що значення оператора вже визначене після обчислення першого операнду. Дивіться приклад:</p> - -<pre class="brush: js">function A(){ console.log('викликано A'); return false; } -function B(){ console.log('викликано B'); return true; } - -console.log( A() && B() ); -// виводить "викликано A" в результаті виклику функції, -// потім виводить false (що є результатом виклику оператора) - -console.log( B() || A() ); -// виводить "викликано B" в результаті виклику функції, -// потім виводить true (що є результатом виклику оператора) -</pre> - -<h3 id="Пріоритет_операторів">Пріоритет операторів</h3> - -<p>Наступні вирази можуть виглядати еквівалентними, але це не так, оскільки оператор <code>&&</code> виконується перед оператором <code>||</code> (дивіться <a href="/uk/docs/Web/JavaScript/Reference/Operators/Operator_Precedence">Пріоритет операторів</a>).</p> - -<pre class="brush: js">true || false && false // вертає true, оскільки && виконується першим -(true || false) && false // вертає false, оскільки не можна застосувати пріоритет операторів</pre> - -<h3 id="Логічне_І"><a id="Logical_AND" name="Logical_AND">Логічне І (<code>&&</code>)</a></h3> - -<p>Наступний код наводить приклади оператора <code>&&</code> (логічне І).</p> - -<pre class="brush: js">a1 = true && true // t && t вертає true -a2 = true && false // t && f вертає false -a3 = false && true // f && t вертає false -a4 = false && (3 == 4) // f && f вертає false -a5 = 'Кіт' && 'Пес' // t && t вертає "Пес" -a6 = false && 'Кіт' // f && t вертає false -a7 = 'Кіт' && false // t && f вертає false -a8 = '' && false // f && f вертає "" -a9 = false && '' // f && f вертає false -</pre> - -<h3 id="Логічне_АБО"><a id="Logical_OR" name="Logical_OR">Логічне АБО (<code>||</code>)</a></h3> - -<p>Наступний код наводить приклади оператора <code>||</code> (логічне АБО).</p> - -<pre class="brush: js">o1 = true || true // t || t вертає true -o2 = false || true // f || t вертає true -o3 = true || false // t || f вертає true -o4 = false || (3 == 4) // f || f вертає false -o5 = 'Кіт' || 'Пес' // t || t вертає "Кіт" -o6 = false || 'Кіт' // f || t вертає "Кіт" -o7 = 'Кіт' || false // t || f вертає "Кіт" -o8 = '' || false // f || f вертає false -o9 = false || '' // f || f вертає "" -o10 = false || varObject // f || object вертає varObject -</pre> - -<div class="blockIndicator note"> -<p><strong>Заувага:</strong> Якщо ви використовуєте цей оператор для присвоєння значення за замовчуванням якійсь змінній, пам'ятайте, що будь-яке <em>хибне</em> значення не буде використане. Якщо вам потрібно лише відфільтрувати {{jsxref("null")}} або {{jsxref("undefined")}}, розгляньте <a href="/uk/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator">оператор null-об'єднання</a> (однак, станом на листопад 2019 ця функціональність ще не була широко реалізована і має вважатися експериментальною, оскільки знаходиться на Стадії 3).</p> -</div> - -<h3 id="Логічне_НЕ_!"><a id="Logical_NOT" name="Logical_NOT">Логічне НЕ (<code>!</code>)</a></h3> - -<p>Наступний код демонструє приклади оператора <code>!</code> (логічне НЕ).</p> - -<pre class="brush: js">n1 = !true // !t вертає false -n2 = !false // !f вертає true -n3 = !'' // !f вертає true -n4 = !'Cat' // !t вертає false -</pre> - -<h4 id="Подвійне_НЕ_!!">Подвійне НЕ (<code>!!</code>)</h4> - -<p>Можна використовувати пару операторів НЕ поспіль, щоб явно викликати перетворення будь-якої величини на відповідний <a href="/uk/docs/Web/JavaScript/Data_structures#Тип_boolean">булевий примітив</a>. Перетворення базується на "правдивості" або "хибності" значення (дивіться {{Glossary("truthy")}} та {{Glossary("falsy")}}).</p> - -<p>Таке саме перетворення можна виконати функцією {{jsxref("Boolean")}}.</p> - -<pre class="brush: js">n1 = !!true // !!truthy вертає true -n2 = !!{} // !!truthy вертає true: <strong>будь-який</strong> об'єкт є правдивим... -n3 = !!(new Boolean(false)) // ...навіть об'єкти Boolean з false <em>.valueOf()</em>! -n4 = !!false // !!falsy вертає false -n5 = !!"" // !!falsy вертає false -n6 = !!Boolean(false) // !!falsy вертає false -</pre> - -<h3 id="Правила_перетворення_для_булевих_значень">Правила перетворення для булевих значень</h3> - -<h4 id="Перетворення_І_на_АБО">Перетворення І на АБО</h4> - -<p>Наступна операція з <strong>булевими значеннями</strong>:</p> - -<pre class="brush: js">умова1 && умова2</pre> - -<p>завжди дорівнює:</p> - -<pre class="brush: js">!(!умова1 || !умова2)</pre> - -<h4 id="Перетворення_АБО_на_І">Перетворення АБО на І</h4> - -<p>Наступна операція з <strong>булевими значеннями</strong>:</p> - -<pre class="brush: js">умова1 || умова2</pre> - -<p>завжди дорівнює:</p> - -<pre class="brush: js">!(!умова1 && !умова2)</pre> - -<h4 id="Перетворення_НЕ">Перетворення НЕ</h4> - -<p>Наступна операція з <strong>булевими значеннями</strong>:</p> - -<pre class="brush: js">!!умова</pre> - -<p>завжди дорівнює:</p> - -<pre class="brush: js">умова</pre> - -<h3 id="Прибирання_вкладених_дужок">Прибирання вкладених дужок</h3> - -<p>Оскільки логічні вирази обчислюються зліва направо, завжди можна прибрати дужки зі складного виразу, дотримуючись деяких правил.</p> - -<h4 id="Прибирання_вкладеного_І">Прибирання вкладеного І</h4> - -<p>Наступна складена операція з <strong>булевими значеннями</strong>:</p> - -<pre class="brush: js">умова1 || (умова2 && умова3)</pre> - -<p>завжди дорівнює:</p> - -<pre class="brush: js">умова1 || умова2 && умова3</pre> - -<h4 id="Прибирання_вкладеного_АБО">Прибирання вкладеного АБО</h4> - -<p>Наступна складена операція з <strong>булевими значеннями</strong>:</p> - -<pre class="brush: js">умова1 && (умова2 || умова3)</pre> - -<p>завжди дорівнює:</p> - -<pre class="brush: js">!(!умова1 || !умова2 && !умова3)</pre> - -<h2 id="Специфікації">Специфікації</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Специфікація</th> - <th scope="col">Статус</th> - <th scope="col">Коментар</th> - </tr> - <tr> - <td>{{SpecName('ES1')}}</td> - <td>{{Spec2('ES1')}}</td> - <td>Початкове визначення.</td> - </tr> - <tr> - <td>{{SpecName('ES5.1', '#sec-11.11')}}</td> - <td>{{Spec2('ES5.1')}}</td> - <td>Визначені у кількох розділах специфікації: <a href="http://www.ecma-international.org/ecma-262/5.1/#sec-11.4.9">Логічний оператор НЕ</a>, <a href="http://www.ecma-international.org/ecma-262/5.1/#sec-11.11">Бінарні логічні оператори</a></td> - </tr> - <tr> - <td>{{SpecName('ES6', '#sec-binary-logical-operators')}}</td> - <td>{{Spec2('ES6')}}</td> - <td>Визначені у кількох розділах специфікації: <a href="http://www.ecma-international.org/ecma-262/6.0/#sec-logical-not-operator">Логічний оператор НЕ</a>, <a href="http://www.ecma-international.org/ecma-262/6.0/#sec-binary-logical-operators">Бінарні логічні оператори</a></td> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-binary-logical-operators')}}</td> - <td>{{Spec2('ESDraft')}}</td> - <td>Визначені у кількох розділах специфікації: <a href="http://tc39.github.io/ecma262/#sec-logical-not-operator">Логічний оператор НЕ</a>, <a href="http://tc39.github.io/ecma262/#sec-binary-logical-operators">Бінарні логічні оператори</a></td> - </tr> - </tbody> -</table> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - - - -<p>{{Compat("javascript.operators.logical")}}</p> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li><a href="/uk/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators">Бітові оператори</a></li> - <li><a href="/uk/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator">Оператор null-об'єднання (<code>??</code>)</a></li> - <li>{{jsxref("Boolean")}}</li> - <li><a href="/uk/docs/Glossary/Truthy">Truthy</a></li> - <li><a href="/uk/docs/Glossary/Falsy">Falsy</a></li> -</ul> |