Используя || вывести сообщение об ошибке если пользователь не введет возраст или нажмет отмену
Используя || вывести сообщение об ошибке если пользователь не введет возраст или нажмет отмену. Через if или switch - легко, а через или - не пойму((
function error(){alert("Error!");}
function displayDate(age){
var date = new Date();
alert(`You year of birdth ${date.getFullYear() - age}`);
}
var age = Number(prompt("How are you old?"));
age==""||age==null||error();
displayDate(age);
// if(age==""||age==null){
// alert("Error!");
// }
// else{
// var date = new Date();
// alert(`You year of birdth ${date.getFullYear() - age}`);
// }
Ответы (3 шт):
Странная задача конечно, как вариант можно сделать так :
const error = () => console.log("Error!")
const displayDate = age => console.log(`You year of birdth ${new Date().getFullYear() - age}`)
const doIt = () => {
const age = +prompt("How are you old?")
age && displayDate(age) || !age && error()
}
doIt()
Логическое ИЛИ в классическом программировании работает следующим образом: "если хотя бы один из аргументов true, то возвращает true, иначе – false". В JavaScript это не совсем так. Если значение не логического типа – то оно к нему приводится в целях вычислений. Например, число 1 будет воспринято как true, а 0 – как false. 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
Я думаю, вы должны вывести сообщение об ошибке тогда, когда
age == undefined
а не null.
А Ваш запрос должен выглядеть так:
undefined == age || error();
Вообщем вот решение:
function error() {
return'Error!';
}
var age = Number(prompt("How are you old?")) || error();
console.log(age);
Все очень просто, если вы введете в prompt число, то вернет число, в случае отмены, ввода строки, пустоты, вернет то, что находится в error().