Javascript 将函数转换为箭头函数

Javascript 将函数转换为箭头函数,javascript,Javascript,我试图将函数转换为箭头函数,但它不起作用。我犯了什么错误吗?我的代码在下面。请指导我哪里做错了 //回调函数 函数询问(问题,是,否){ 如果(确认(问题)){ 是() }否则{ 否() } } 函数showOk(){ console.log(“您同意”) } 函数showCancel(){ console.log(“已取消”) } 询问(“你同意吗?”,showOk,showCancel) //箭头函数 让我们提问=(问题,是,否)=>{ 如果(确认(问题)){ 是() }否则{ 否() }

我试图将函数转换为箭头函数,但它不起作用。我犯了什么错误吗?我的代码在下面。请指导我哪里做错了

//回调函数
函数询问(问题,是,否){
如果(确认(问题)){
是()
}否则{
否()
}
}
函数showOk(){
console.log(“您同意”)
}
函数showCancel(){
console.log(“已取消”)
}
询问(“你同意吗?”,showOk,showCancel)
//箭头函数
让我们提问=(问题,是,否)=>{
如果(确认(问题)){
是()
}否则{
否()
}
让showOk=()=>console.log(“您同意”);
让showCancel=()=>console.log(“已取消”);
}
询问(“你同意吗?”,showOk,showCancel)

你迟到的时间很长

较短的方法是将函数与条件语句一起使用

const
提问=(问题,是,否)=>(确认(问题)?是:否)(),
showOk=()=>console.log(“您同意”),
showCancel=()=>console.log(“已取消”);

询问(“你同意吗?”,showOk,showCancel)要求箭头函数具有隐式返回表达式, 因此,对于每个函数,都必须返回一些内容,如果使用{},则至少返回true

您的代码看起来像

let ask = (question, yes, no) => {
  if (confirm(question)) {
      return yes();
   }
   return no();
}

let showOk = () => {
  console.log("you agreed");
  return true;
};

let showCancel = () => {
    console.log("Canceled");
  return true;
};

ask("do you agree ?", showOk, showCancel);

它可能抛出引用错误,因为showOk和showCancel是在arrow函数的作用域中声明的,而不是全局声明的。

const ask=(问题,是,否)=>确认(问题)?是():否()是的,您在格式不良的代码中声明
showOk
showCancel
ask
的范围内。应获得
showOk未定义错误
-与箭头函数无关。在声明
showCancel
之前,您不会关闭
ask
函数。查看最后一个花括号。他缺少了花括号,还不算太早。@RoboRobok-实际上花括号太晚了,还不算太早。@Adam
ask()
arrow版本中缺少了花括号。是的,正如后来看到的那样,已经太晚了。
(确认(问题)?是:否)(
最好是
确认(问题)?yes():no()
-括号移位会让人困惑。为什么您认为arrow函数应该返回任何内容?函数,不管是否返回,都不必返回任何内容。此外,您还混淆了隐式返回的“单行”箭头函数。箭头函数仍然可以使用大括号,在这种情况下,它们不会隐式返回。不过,这些都与这个问题无关。