javascript - 闭包 - Javascript

标签 javascript

因为回调的行为就好像它们实际上被放置在一个函数中一样,它们实际上是闭包:它们可以访问包含函数的变量和参数,甚至是全局范围内的变量 link .正确的?但如果我这样做:

function fullName(firstName, lastName, callback){
 var f_scope = "X";
  console.log("My name is " + firstName + " " + lastName);
  callback(lastName);
}

var greeting = function(ln){
  console.log('Welcome Mr. ' + ln);
  console.log(f_scope);//<<---error

};

fullName("Jackie", "Chan", greeting);

另一方面,如果 greetingfullName 中,则不会发生错误。那么回调不是 100% 像放在函数内部一样吗?正确的?

最佳答案

they can access the containing function’s variables and parameters

词汇上包含。他们可以访问函数定义范围内的变量,而不是函数调用范围内的变量。 JS 中的函数做形式 lexical closures ,没有没有dynamic scoping .

f_scope 变量既不是全局变量,也不是在包含 greeting 的函数中声明的。

关于javascript - 闭包 - Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34191573/

相关文章:

javascript - React Router 链接右键单击不起作用

javascript - 将缓冲区(图像)转换为文件

javascript - 在 JavaScript 中按键排序数组

javascript - 使用适用于 JavaScript 的 Google API 客户端库访问 Google Sites API

javascript - 使用 splice 方法添加元素

javascript - 如何使用 CSS 设置 mCustomScrollbar 的宽度

javascript - ColdFusion 处理 AJAX JSON 数据

javascript - ReactJS - 单击单选按钮时动态更改组件的颜色

javascript - 从不包括无穷大的对象数组中查找最小值/最大值

javascript - 将图像大小调整为缩略图版本