diff options
| author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:43:23 -0500 |
|---|---|---|
| committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:43:23 -0500 |
| commit | 218934fa2ed1c702a6d3923d2aa2cc6b43c48684 (patch) | |
| tree | a9ef8ac1e1b8fe4207b6d64d3841bfb8990b6fd0 /files/uk/web/javascript/reference/operators/logical_or | |
| parent | 074785cea106179cb3305637055ab0a009ca74f2 (diff) | |
| download | translated-content-218934fa2ed1c702a6d3923d2aa2cc6b43c48684.tar.gz translated-content-218934fa2ed1c702a6d3923d2aa2cc6b43c48684.tar.bz2 translated-content-218934fa2ed1c702a6d3923d2aa2cc6b43c48684.zip | |
initial commit
Diffstat (limited to 'files/uk/web/javascript/reference/operators/logical_or')
| -rw-r--r-- | files/uk/web/javascript/reference/operators/logical_or/index.html | 151 |
1 files changed, 151 insertions, 0 deletions
diff --git a/files/uk/web/javascript/reference/operators/logical_or/index.html b/files/uk/web/javascript/reference/operators/logical_or/index.html new file mode 100644 index 0000000000..16dc2868bb --- /dev/null +++ b/files/uk/web/javascript/reference/operators/logical_or/index.html @@ -0,0 +1,151 @@ +--- +title: Логічне АБО (||) +slug: Web/JavaScript/Reference/Operators/Logical_OR +tags: + - JavaScript + - Довідка + - Логічний оператор + - Оператор +translation_of: Web/JavaScript/Reference/Operators/Logical_OR +--- +<div>{{jsSidebar("Operators")}}</div> + +<p>Логічний оператор АБО (<code>||</code>) (логічна диз'юнкція) для набору операндів повертає true тільки якщо один чи більше з його операндів дорівнюють true. Зазвичай його використовують з {{jsxref("Boolean","булевими")}} (логічними) значеннями. В цьому випадку він повертає булеве значення. Однак, оператор <code>||</code> насправді повертає значення одного з наданих операндів, а отже, якщо цей оператор застосовується з не булевими значеннями, він поверне не булеве значення.</p> + +<div>{{EmbedInteractiveExample("pages/js/expressions-logical-or.html", "shorter")}}</div> + +<div class="hidden">The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</div> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox notranslate"><em>вираз1</em> || <em>вираз2</em> +</pre> + +<h2 id="Опис">Опис</h2> + +<p>Якщо <code>вираз<strong>1</strong></code> можна привести до <code>true</code>, вертає <code>вираз<strong>1</strong></code>; інакше, вертає <code>вираз<strong>2</strong></code>.</p> + +<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> може використовуватись з операндами не булевого типу, він все одно може вважатися булевим оператором, оскільки значення, які він повертає, завжди можуть бути приведені до <a href="/uk/docs/Web/JavaScript/Data_structures#%D0%A2%D0%B8%D0%BF_boolean">булевого примітиву</a>. Щоб явно перетворити повернені значення (або, взагалі, будь-який вираз) до відповідного булевого значення, скористайтесь подвійним <a href="/uk/docs/Web/JavaScript/Reference/Operators/Logical_Operators#Logical_NOT">оператором НЕ</a> або конструктором {{jsxref("Global_Objects/Boolean/Boolean", "Boolean")}}.</p> + +<h3 id="Обчислення_з_коротким_замиканням">Обчислення з коротким замиканням</h3> + +<p>Логічні вирази АБО обчислюються зліва направо, вони перевіряються на "коротке замикання" під час обчислення за наступним правилом:</p> + +<p><code>(якийсь правдивий вираз) || <em>expr</em></code> обчислюється як правдивий вираз.</p> + +<p>Коротке замикання означає, що частина <code><em>expr</em></code> у прикладі <strong>не обчислюється</strong>, тому будь-які побічні ефекти від цього не відбудуться (наприклад, якщо <code><em>expr</em></code> є викликом функції, виклику не станеться). Це відбувається тому, що значення оператора вже визначене після обчислення першого операнду. Дивіться приклад:</p> + +<pre class="brush: js notranslate">function A(){ console.log('викликано A'); return false; } +function B(){ console.log('викликано B'); return true; } + +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 notranslate">true || false && false // вертає true, оскільки && виконується першим +(true || false) && false // вертає false, бо пріоритет операторів не застосовується</pre> + +<h2 id="Приклади">Приклади</h2> + +<h3 id="Використання_АБО">Використання АБО</h3> + +<p>Наступний код наводить приклади оператора <code>||</code> (логічне АБО).</p> + +<pre class="brush: js notranslate">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 || об'єкт вертає 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>.</p> +</div> + +<h3 id="Правила_перетворення_для_булевих_значень">Правила перетворення для булевих значень</h3> + +<h4 id="Перетворення_І_на_АБО">Перетворення І на АБО</h4> + +<p>Наступна операція з <strong>булевими значеннями</strong>:</p> + +<pre class="brush: js notranslate">bCondition1 && bCondition2</pre> + +<p>завжди дорівнює:</p> + +<pre class="brush: js notranslate">!(!bCondition1 || !bCondition2)</pre> + +<h4 id="Перетворення_АБО_на_І">Перетворення АБО на І</h4> + +<p>Наступна операція з <strong>булевими значеннями</strong>:</p> + +<pre class="brush: js notranslate">bCondition1 || bCondition2</pre> + +<p>завжди дорівнює:</p> + +<pre class="brush: js notranslate">!(!bCondition1 && !bCondition2)</pre> + +<h3 id="Прибирання_вкладених_дужок">Прибирання вкладених дужок</h3> + +<p>Оскільки логічні вирази обчислюються зліва направо, завжди можна прибрати дужки зі складного виразу, дотримуючись певних правил.</p> + +<p>Наступна складена операція з <strong>булевими значеннями</strong>:</p> + +<pre class="brush: js notranslate">bCondition1 && (bCondition2 || bCondition3)</pre> + +<p>завжди дорівнює:</p> + +<pre class="brush: js notranslate">!(!bCondition1 || !bCondition2 && !bCondition3)</pre> + +<h2 id="Специфікації">Специфікації</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Специфікація</th> + </tr> + </thead> + <tbody> + <tr> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#prod-LogicalORExpression', 'Logical OR expression')}}</td> + </tr> + </tbody> +</table> + +<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> + + + +<p>{{Compat("javascript.operators.logical_or")}}</p> + +<h2 id="Див._також">Див. також</h2> + +<ul> + <li><a href="/uk/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator">Оператор null-об'єднання (<code>??</code>)</a></li> + <li>{{jsxref("Boolean")}}</li> + <li>{{Glossary("Truthy")}}</li> + <li>{{Glossary("Falsy")}}</li> +</ul> |
