有人能给我解释一下为什么这个Javascript函数不能给出期望的结果吗?
有人能给我解释一下为什么这个Javascript函数不能给出期望的结果吗?,javascript,Javascript,职能人员1(姓名){ var n=名称; 返回(函数(n){ 警报(n); })(n) ); } person1('susan')(); person1('peter')()person1('susan')不返回函数,它返回未定义的,因此以后不能调用它-额外的()会导致脚本抛出 如果您希望调用person1返回一个函数,在调用该函数时,该函数会提醒名称,请删除n参数,并返回一个提醒name的函数,但不调用该函数,只需返回它,这样就可以在外部调用返回的函数: 职能人员1(姓名){ return(
职能人员1(姓名){
var n=名称;
返回(函数(n){
警报(n);
})(n) );
}
person1('susan')();
person1('peter')()
person1('susan')
不返回函数,它返回未定义的,因此以后不能调用它-额外的()
会导致脚本抛出
如果您希望调用person1
返回一个函数,在调用该函数时,该函数会提醒名称,请删除n
参数,并返回一个提醒name
的函数,但不调用该函数,只需返回它,这样就可以在外部调用返回的函数:
职能人员1(姓名){
return()=>{
console.log(名称);
};
}
person1('susan')();
person1('peter')()代码>函数的代码基本正常,但调用人员1
则不正常。您应该省略调用后的括号。因为您没有从person1
返回函数。实际上,您根本没有返回值
function person1(name) {
var n = name;
return (function (n) {
alert(n);
})(n);
}
person1('susan');
person1('peter');
这会起作用,但可以简化。当然,在这种情况下,函数可以简化为函数person1(name){alert(name);}
@FelixKling我知道,但问题是为什么它不起作用。因此,我修改了原始代码以说明问题:-)。在我点击提交按钮之前,已经给出了返回函数的正确解决方案。