相关疑难解决方法(0)

JavaScript闭包如何工作?

您如何向知道其所包含概念的人(例如函数,变量等)解释JavaScript闭包,但不了解闭包本身?

我已经看过维基百科上给出的Scheme示例,但遗憾的是它并没有帮助.

javascript variables closures scope function

7644
推荐指数
82
解决办法
139万
查看次数

循环内的JavaScript闭包 - 简单实用的例子

var funcs = [];
// let's create 3 functions
for (var i = 0; i < 3; i++) {
  // and store them in funcs
  funcs[i] = function() {
    // each should log its value.
    console.log("My value: " + i);
  };
}
for (var j = 0; j < 3; j++) {
  // and now let's run each one to see
  funcs[j]();
}
Run Code Online (Sandbox Code Playgroud)

它输出这个:

我的价值:3
我的价值:3
我的价值:3

而我希望它输出:

我的价值:0
我的价值:1
我的价值:2


使用事件侦听器导致运行函数的延迟时,会出现同样的问题:

var buttons = document.getElementsByTagName("button");
// let's create 3 …
Run Code Online (Sandbox Code Playgroud)

javascript closures loops

2689
推荐指数
25
解决办法
34万
查看次数

是否在ES6中使用let或const声明变量?

我已经玩ES6一段时间了,我注意到虽然声明的变量var按预期提升了......

console.log(typeof name); // undefined
var name = "John";
Run Code Online (Sandbox Code Playgroud)

... 用吊装声明letconst似乎有一些问题的变量:

console.log(typeof name); // ReferenceError
let name = "John";
Run Code Online (Sandbox Code Playgroud)

console.log(typeof name); // ReferenceError
const name = "John";
Run Code Online (Sandbox Code Playgroud)

这是否意味着变量声明let或未声明const?这是怎么回事?这个问题letconst这个问题有什么区别吗?

javascript const let hoisting ecmascript-6

240
推荐指数
5
解决办法
5万
查看次数

javascript for循环中的异步进程

我正在运行以下形式的事件循环:

var i;
var j = 10;
for (i = 0; i < j; i++) {

    asynchronousProcess(callbackFunction() {
        alert(i);
    });
}
Run Code Online (Sandbox Code Playgroud)

我试图显示一系列显示数字0到10的警报.问题是,当回调函数被触发时,循环已经经历了几次迭代并且它显示了更高的值i.有关如何解决此问题的任何建议?

javascript synchronization asynchronous for-loop

107
推荐指数
3
解决办法
9万
查看次数

javascript中的"调用上下文"和"执行上下文":我们在谈论同样的事情吗?

有时我读"调用上下文"有时候是"执行上下文".我想知道我们是否在讨论相同的概念.

我必须说在ECMAScript6规范中我没有找到任何对"调用上下文"的引用.

javascript

4
推荐指数
2
解决办法
987
查看次数