将变量发送到 javascript 中的函数表达式
Sending a variable to a function expression in javascript?
我将首先用一个简单的例子来解释我在这里试图做的事情。
- 创建一个局部范围变量 id 并为其指定值 x。
- 创建一个函数表达式,其中我通过alert(a(打印出值x;并将该函数作为变量fn存储在全局列表中。
- 修改 id 以表示值 y。
- 通过我的全局列表调用 fn((; 并为我打印出 x。
现在的问题是 fn(( 打印的值是 y 而不是最初分配给 id 的 x。我首先通过处理临时全局变量找到了解决方案,但随着项目的发展,它根本不起作用了。我不再有跟踪这些全球温度所需的手段。
任何帮助为我指出正确方向的帮助将不胜感激。如果这个问题以前已经回答过,我很抱歉。也许我只是不太擅长搜索网络,但我还没有找到一个令人满意的。
注意:我也许应该补充一点,与我提到变量范围的次数相反,这不是问题。局部变量似乎以某种方式被全局处理(或者可能创建了一个指向它的全局指针?(,因为以上述方式从其他范围打印局部变量没有问题。
这是我想要的代码示例(我决定这样比使用我自己的代码更清晰(:
var fnList = []
function FunctionA(){
for(var i = 0; i < 10; i++){
var iToFunctionExpression = i; // this is where I want to somehow send my variable to the function
fnList.push(function(){
alert(iToFunctionExpression);
});
}
}
function FunctionB(){
for(var i = 10; i < 20; i++){
var iToFunctionExpression = i; // this is where I want to somehow send my variable to the function
fnList.push(function(){
alert(iToFunctionExpression);
});
}
}
function FunctionPrintAB(){
for(var fn = 0; fn < fnList.length; fn++){
fnList[fn](); // here I want to alert the numbers 0 through 19
}
}
此致敬意。
你需要构建一个闭包:
var x = 1;
function makealerter(i) {
return function() {
alert(i);
}
}
var fn = makealerter(x);
var y = 2;
fn();
x = y;
fn();
相关文章:
- 能够在定义函数表达式之前使用它
- 函数表达式,返回回调函数
- JavaScript中的立即调用函数表达式(IIFE)-传递jQuery
- 函数声明与函数表达式之间的性能差异
- 立即调用函数表达式(IIFE)相对于普通函数的优势
- 如何防止 JS 缩小删除命名函数表达式的名称
- Angularjs 与 coffeescript 函数表达式中断
- JavaScript 混乱中的函数表达式
- 从ES6中的函数表达式访问类作用域
- 提升作为数组项的匿名函数表达式
- Javascript Mocha测试-测试函数表达式中的函数表达式
- 函数中的JavaScript函数表达式
- Javascript闭包覆盖函数表达式
- 函数表达式的词法作用域
- 请解释一下“;立即调用函数表达式“;以及“;自调用匿名函数”;
- JavaScript 中的函数语句和函数表达式
- ng-class 的函数表达式在 ng-click 时被调用
- 如何创建名称和主体存储在不同变量中的 JavaScript 函数表达式
- Object.Prototype 方法和 IIFE(立即调用的函数表达式)中的“use strict”
- 全局范围内的函数表达式与函数声明的区别