Здравствуйте друзья, только учу JavaScript, мне немного непонятны некоторые моменты,помогите пожалуйста
Пришел вот к такому решению интересному, может кому пригодится:
function getFizzBuzz(num) {
for (let i = 1; i <= num; i++) {
switch(0) { //Результат сравнения
case Number(!(!(i % 3) && !(i % 5))): //Условия
console.log("fizzbuzz");
break;
case (i % 3):
console.log("fizz");
break;
case (i % 5):
console.log("buzz");
break;
default:
console.log(i);
break;
}
}
}
let num = +prompt("Please, write any number: ", 0);
getFizzBuzz(num);
Подскажите, я правильно понимаю этот фрагмент кода? Вроде как думал так и написал, он еще работает когда я пишу просто (!(i % 3) && (i % 5)), но тогда он так и останется Boolean значением получается?
Пишем Number(!) для того чтобы преобразовать код внутри скобок Number к логическому типу, чтобы работал оператор &&, иначе оператор сравнения && работать не будет. далее опять преобразуем к логическому типу !(i % 3) и !(i % 5), в итоге все преобразуется к числовому типу на выходе, так как вначале стоит Number преобразователь.
Ответы (1 шт):
Оператор switch последовательно сравнит "a" со всеми вариантами из case.
case является ответом на вопрос "чему равно А". switch является тем местом, куда можно записать условие.
switch(i % 3){
case 'если результат i % 3 равен такому-то, тогда': console.log(i + ' такой-то');
}
Вы можете использовать условие в case, тогда switch должен являться boolean type.
function getFizzBuzz (num) {
for(let i = 0; i < num; i++){
switch(true) {
case i % 3 == 0 && i % 5 == 0:
console.log("fizzbuzz");
break;
case i % 3 == 0:
console.log("fizz");
break;
case i % 5 == 0:
console.log("buzz");
break;
default:
console.log(i);
break;
}
}
}
let num = +prompt("Please, write any number: ", 0);
getFizzBuzz(num);