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-实际上花括号太晚了,还不算太早。@Adamask()
arrow版本中缺少了花括号。是的,正如后来看到的那样,已经太晚了。(确认(问题)?是:否)(
最好是确认(问题)?yes():no()
-括号移位会让人困惑。为什么您认为arrow函数应该返回任何内容?函数,不管是否返回,都不必返回任何内容。此外,您还混淆了隐式返回的“单行”箭头函数。箭头函数仍然可以使用大括号,在这种情况下,它们不会隐式返回。不过,这些都与这个问题无关。