任何人都可以解释这个Javascript函数为什么不能给出期望的结果?

问题描述 投票:-1回答:1
 function person1(name) {
    var n = name;
    return (function (n) {
        alert(n);
    })(n);
}

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

第二条语句无法运行,任何人都可以给我正确的解释。

javascript
1个回答
2
投票

[person1('susan')不返回函数,它返回undefined,因此您以后不能调用它-多余的()会导致脚本抛出。

如果要调用person1返回一个函数,该函数在被调用时会提示名称,删除n参数,然后返回一个提示name的函数-但不要调用该函数 ,只需return即可,因此可以在外部调用返回的函数:

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

person1('susan')();
person1('peter')();
© www.soinside.com 2019 - 2024. All rights reserved.