Page 40 - 6105
P. 40

isWeekend = true;
                      if (hour <10 || hour> 18 || isWeekend) {


                        alert  (  'Офіс  до  10  або  після  18  або  у  вихідний
               закритий');

                      }

                      JavaScript обчислює кілька АБО зліва направо. При цьому, щоб економити

               ресурси, використовується так званий «короткий цикл обчислення».

                      Припустимо, обчислюються кілька АБО поспіль: a || b || c || .... Якщо перший

               аргумент - true, то результат свідомо буде true (хоча б одне зі значень - true), і

               інші значення ігноруються. Це особливо помітно, коли вираз, переданий в якості

               другого аргументу, має сторонній ефект - наприклад, привласнює змінну.

                      При запуску прикладу нижче привласнення x не відбудеться:


                      var x;
                      true || (X = 1);


                      alert (x); // undefined, x не присвоєно
                      А  в  прикладі  нижче  перший  аргумент  -  false,  так  що  АБО  спробує

               обчислити другий, запустивши тим самим присвоювання:

                      var x;


                      false || (X = 1);
                      alert (x); // 1

                      Отже, оператор  АБО обчислює рівно стільки значень, скільки необхідно  -

               до  першого  true.  При  цьому  оператор  АБО  повертає  те  значення,  на  якому

               зупинилися обчислення. Причому, не перетворене до логічного типу.

                      Наприклад:


                      alert (1 || 0); // 1
                      alert (true || 'неважливо що'); // true

                      alert (null || 1); // 1

                      alert (undefined || 0); // 0



                                                                39
   35   36   37   38   39   40   41   42   43   44   45