javascript - 任何人都可以解释为什么这个 Javascript 函数不能给出预期的结果?
问题描述
function person1(name) {
var n = name;
return (function (n) {
alert(n);
})(n);
}
person1('susan')();
person1('peter')();
第二个语句不能运行,任何人都可以给我一个正确的解释。
解决方案
person1('susan')
不返回函数,它返回undefined
,所以你不能在之后调用它 -()
脚本抛出的额外结果。
如果您想调用person1
返回一个函数,该函数在调用时会提醒名称,删除n
参数并返回一个提醒的函数name
-但不要调用函数,只需调用return
它,因此可以在外部调用返回的函数:
function person1(name) {
return () => {
console.log(name);
};
}
person1('susan')();
person1('peter')();
推荐阅读
- wordpress - 检查页面标题是否已存在于自定义分类类别(WordPress)中
- salt-stack - Minion 在 master 上找不到文件
- tensorflow - 如何在没有 IPython 笔记本的情况下播放 tensorflow `decode_wav()` 波形?
- javascript - 将数据正确导出到 CSV 文件
- go - 调用方法时如何更改包类型?
- scala - Scala 中的随机生成器是线程安全的吗
- apache - 我需要使用 htaccess 从 URL 中删除语言代码
- sql - 在 where 语句中使用来自 @variable 的列表
- wso2 - 带有 Apache Synapse 的 REST 代理服务器
- java - Java 输入字节数组有错误的 4 字节结束单元