2015-08-13 2 views
0

Это решение для FizzBuzz (оно печатает цифры от 1 до 100, но печатает «Fizz» для чисел, которые делятся на 3, «Buzz» для чисел, делящихся на 5, и «FizzBuzz» для чисел, делящихся обоими).Что делает || сделать в console.log() в javascript?

for (var n = 1; n <= 100; n++) { 
    var output = ""; 
    if (n % 3 == 0) 
     output += "Fizz"; 
    if (n % 5 == 0) 
     output += "Buzz"; 
    console.log(output || n); 
} 

Я не понимаю, как || работает в console.log(output || n);

Обычно логическое выражение, как, которое вычисляется либо истинным, либо ложным.

+3

Это было, по крайней мере четвёртый вопрос с просьбой [JS логические операторы] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators) в короткий период. Они не возвращают логические значения, они возвращают операнды. – Teemu

+0

спасибо, что было очень полезно – LeLo

+0

Ты добрый. Кроме того, естественно, '!' Не возвращает операнд, он всегда возвращает логическое значение. – Teemu

ответ

0

Когда нет выхода из if, он печатает номер (n). Это то, что || do here;)

0

""10, пустая строка, считается «фальшивым» значением в JavaScript. То есть при использовании в выражении, включающем логические операторы, "" обрабатывается как false. MDN имеет resource on falsy values в JavaScript.

Например, фрагмент кода if ("") console.log("Hello, World!"); не будет производить никакого вывода, поскольку оператор if оценивает его выражение как false.

В случае Вашего решения FizzBuzz, должны output никогда не ничего приложили к нему, выражение output || n будет эффективно false || n, и из-за способа JavaScript оценивает логические операторы, выражение будет вычисляться n.

1

Оператор OR перенаправляет левую сторону, если это правда, если это ложь, перенаправляет правую сторону. То же самое:

var foo = output || n; 
console.log(foo); 
Смежные вопросы