Работая над очень простой c функцией, я весьма озадачен тем, как работает сравнение if.
в конце моего кода (ниже) у меня есть:
if (number == 0) {
result = unit;
console.log(result);
}
else if (hundred == false && ten == false) {
result = unit;
}
else if (hundred == false && ten != false) {
result = ten + '-' + unit;
}
return result;
В последнем условии if, если я поставлю 'ten == true', ничего не произойдет, пока он работает как-то нормально с отрицательным сравнением.
В переменной 'ten' содержится строка. Оно не пустое, поэтому оно должно быть истинным (а не ложным). Любая причина, почему это происходит?
function askNumber() {
var number = parseInt(prompt('Veuillez entrer un nombre entre 0 et 999.'));
if (isNaN(number)) {
return askNumber();
}
else if (number < 0) {
alert('Veuillez entrer un nombre supérieur à 0.')
return askNumber();
}
else if (number > 999) {
alert('Veuillez entrer un nombre inférieur à 999.');
return askNumber();
}
else {
return number;
}
}
function numberToLetter() {
var number = askNumber();
var units = number % 10;
var unit = units;
var tens = number % 100 - units;
var ten = tens / 10;
var hundreds = number - (tens + units);
var hundred = hundreds / 100;
var result = '';
switch (unit) {
case 0: unit = 'zero';
break;
case 1: unit = 'un';
break;
case 2: unit = 'deux';
break;
case 3: unit = 'trois';
break;
case 4: unit = 'quatre';
break;
case 5: unit = 'cinq';
break;
case 6: unit = 'six';
break;
case 7: unit = 'sept';
break;
case 8: unit = 'huit';
break;
case 9: unit = 'neuf';
break;
}
switch (ten) {
case 1: ten = 'dix';
break;
case 2: ten = 'vingt';
break;
case 3: ten = 'trente';
break;
case 4: ten = 'quarante';
break;
case 5: ten = 'cinquante';
break;
case 6: ten = 'soixante';
break;
case 7: ten = 'soixante-dix';
break;
case 8: ten = 'quatre-vingt';
break;
case 9: ten = 'quatre-vingt-dix';
break;
}
switch (hundred) {
case 1: hundred = 'cent';
break;
case 2: hundred = 'deux';
break;
case 3: hundred = 'trois';
break;
case 4: hundred = 'quatre';
break;
case 5: hundred = 'cinq';
break;
case 6: hundred = 'six';
break;
case 7: hundred = 'sept';
break;
case 8: hundred = 'huit';
break;
case 9: hundred = 'neuf';
break;
}
if ((hundreds / 100) > 1) {
hundred += '-cent';
}
//
if (number == 0) {
result = unit;
console.log(result);
}
else if (hundred == false && ten == false) {
result = unit;
}
else if (hundred == false && ten != false) {
result = ten + '-' + unit;
}
return result;
}
alert(numberToLetter());
Просто введите любое число из 2 цифр (например, == 17). Окно оповещения о выходе пустое. Если вы замените сравнение на «! = False», то это сработает.
На мой взгляд, если это не ложь, то это правда ... Для логического значения может быть только 2 значения.
Что я не получу?