javascript - JS:在创建闭包时,如果我不存储为变量,内部函数如何访问外部函数参数?
问题描述
我不知道这些闭包 2 是如何完成同样的事情的。我了解下面的示例 1 将如何工作,因为变量foo
存储了参数的值,但我无法理解的是,在示例 2 中删除变量并直接从内部 func 访问外部参数,它有什么参考那个?
//ex1:
function firstex1(x) {
let foo = x;
console.log(foo)
function second() {
return foo + 100
}
return second
}
console.log("Example 1: "+ firstex1(1)());
//ex:2
function firstex2(x) {
console.log(x)
function second() {
return x + 100
}
return second
}
console.log("Example 2: "+ firstex2(1)());
解决方案
在示例 2 中,参数 x 被传递给外部函数。在外部函数内部,每个实体都可以访问 x,因为它的范围包含在该函数的完整代码块中。当一个内部函数试图访问那个 x 时,它可以很容易地做到这一点,因为它可以访问那个范围,因为它本身就存在于那个范围中。这就像您声明一个全局变量并尝试在函数内部访问它一样。该函数可以访问所有全局变量。
var count=0;
function a()
{
console.log(count++)
}
a();
以上将返回 count+1 ,因此将
function first(x) {
console.log(x)
function second() {
return x + 100
}
return second
}
console.log(first(1)());
推荐阅读
- javascript - 使用 Javascript 关闭侧边栏
- sql - 如何动态计算表值并从 SQL Server 中的参数中找到 Min 和 Max 目标
- neo4j - CYPHER/NEO4J:从模式理解列表结果中计算和删除重复项
- html - Carbon Design Systems UI Shell 组件在代码笔中不起作用
- python - 使用 GPU 训练 XGBoost 回归器时内核死机
- c - 无法调用函数而不陷入无限循环
- python - 上一个作业结束后如何添加调度程序作业
- python - 只能是存储在 pygame.sprite.Group 中的矩形对象
- javascript - 如何创建一个 javascript 函数,将用户输入的输入值组合起来并将它们放在一个短语中?
- node.js - 节点是否有任何进程间内存存储?