cuốn sách gpt4 ai đã làm

javascript - ECMAScript 5 'for' 循环,覆盖 'i' 与 ECMAScript 6 'for' 循环

In lại Tác giả: Walker 123 更新时间:2023-11-28 10:45:32 27 4
mua khóa gpt4 Nike

我接受了 JavaScript 前端开发人员职位的面试。我失败了,因为我不知道一些高级问题。请帮助我至少理解这一点。

我的问题在于 ECMAScript 6 知识,而不是 ECMAScript 5 中的 for 循环或闭包。我不明白 for/of 正在做什么,也不明白是谁在这段 ECMAScript 6 代码中施展魔法,以免覆盖 Tôi.

问题是这样的:

To display numbers from 1 to 5 in the for loop, every time we click on a button, we have to wrap the console in a closure, to have the right output, so the Tôi variable will not be overwritten if we use this closure.

In ECMAScript 6, in a loop we only have the callback function, and Tôi is not overwritten. Why?

// ECMAScript 5
for (var i = 0; i < 5; i++) {
var btn = document.createElement('button');
btn.appendChild(document.createTextNode('Button ' + i));
btn.addEventListener('click',
function(x) {
return function() {
console.log(x);
};
}(i)
);
document.body.appendChild(btn);
}

// ECMAScript 6
const ps = Array.from(document.querySelectorAll('p'));

for (const [i, paragraph] of ps.entries()) {
paragraph.addEventListener('click', function() {
return console.log(`${i+1}: ${this.textContent}`);
});
}

câu trả lời hay nhất

这只是范围问题。它与 for...of 循环无关...

看看这些场景:

var 是全局的

// "i" is global
for (var i = 0; i < 5; i++) {}

console.log(i);

var 仍然是全局的

// "i" is global
var i;
for (i = 0; i < 5; i++) {}

console.log(i);

let 是本地的

// "i" is local
for (let i = 0; i < 5; i++) {}

console.log(i); // ReferenceError

let 是全局的

// "i" is global
let i;
for (i = 0; i < 5; i++) {}

console.log(i);

关于javascript - ECMAScript 5 'for' 循环,覆盖 'i' 与 ECMAScript 6 'for' 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43875966/

27 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress