为什么下面的箭头函数不会执行,而简单的 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中,函数本身可以是变量。到目前为止,您的代码所做的是创建一个函数,但实际上并未将其分配给变量。所以你说“这是 运行 的函数”,但实际上从未在任何地方保存该函数。您可以在此处执行一些方法。

  1. 只需将代码保留为 if 语句

  2. 将函数分配给一个变量并像这样调用它:

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();