首页 > 解决方案 > 任何人都可以解释为什么这个 Javascript 函数不能给出预期的结果?

问题描述

     function person1(name) {
        var n = name;
        return (function (n) {
            alert(n);
        })(n);
    }

    person1('susan')();
    person1('peter')();

第二个语句不能运行,任何人都可以给我一个正确的解释。

标签: javascript

解决方案


person1('susan')不返回函数,它返回undefined,所以你不能在之后调用它 -()脚本抛出的额外结果。

如果您想调用person1返回一个函数,该函数在调用时会提醒名称,删除n参数并返回一个提醒的函数name-但不要调用函数,只需调用return它,因此可以在外部调用返回的函数:

function person1(name) {
  return () => {
    console.log(name);
  };
}

person1('susan')();
person1('peter')();


推荐阅读