为什么下面的箭头函数不会执行,而简单的 if 语句会执行?
Why the following arrow function won't execute but a simple if statement will?
代码有问题吗?还是我不了解如何在不专门调用函数的情况下触发函数?
代码:
let age = prompt('How old are you?');
//Arrow function that won't execute:
()=> { return (age < 18 ? alert('You are too young!') : alert('welcome!')); };
//This executes just fine:
if (age <= 18) {
alert('You are to young!');
} else {
alert('welcome!');
};
在JavaScript中,函数本身可以是变量。到目前为止,您的代码所做的是创建一个函数,但实际上并未将其分配给变量。所以你说“这是 运行 的函数”,但实际上从未在任何地方保存该函数。您可以在此处执行一些方法。
只需将代码保留为 if 语句
将函数分配给一个变量并像这样调用它:
var checkAge = ()=> { return (age < 18 ? alert('You are too young!') : alert('welcome!')); };
然后用checkAge()
调用它。
你真正应该做的是将年龄作为参数传递给 checkAge 函数,如下所示:
var checkAge = (a)=> { return (a < 18 ? alert('You are too young!') : alert('welcome!')); };
checkAge(a);
因为这意味着您可以随时在代码中的其他地方再次使用该函数。
这就是你想要做的:
const checkAge = (question = 'How old are you?') => {
let age = Number(prompt(question));
if (!isNaN(age)) {
alert(age <= 18 ? 'You are too young!' : 'welcome!');
return age;
} else {
checkAge('Please enter a number!\nHow old are you?');
}
}
// call the function
checkAge();
代码有问题吗?还是我不了解如何在不专门调用函数的情况下触发函数?
代码:
let age = prompt('How old are you?');
//Arrow function that won't execute:
()=> { return (age < 18 ? alert('You are too young!') : alert('welcome!')); };
//This executes just fine:
if (age <= 18) {
alert('You are to young!');
} else {
alert('welcome!');
};
在JavaScript中,函数本身可以是变量。到目前为止,您的代码所做的是创建一个函数,但实际上并未将其分配给变量。所以你说“这是 运行 的函数”,但实际上从未在任何地方保存该函数。您可以在此处执行一些方法。
只需将代码保留为 if 语句
将函数分配给一个变量并像这样调用它:
var checkAge = ()=> { return (age < 18 ? alert('You are too young!') : alert('welcome!')); };
然后用checkAge()
调用它。
你真正应该做的是将年龄作为参数传递给 checkAge 函数,如下所示:
var checkAge = (a)=> { return (a < 18 ? alert('You are too young!') : alert('welcome!')); };
checkAge(a);
因为这意味着您可以随时在代码中的其他地方再次使用该函数。
这就是你想要做的:
const checkAge = (question = 'How old are you?') => {
let age = Number(prompt(question));
if (!isNaN(age)) {
alert(age <= 18 ? 'You are too young!' : 'welcome!');
return age;
} else {
checkAge('Please enter a number!\nHow old are you?');
}
}
// call the function
checkAge();