javascript - 将函数推送到数组,将 let 转换为 var
问题描述
var
是否可以使用而不是将函数推送到数组中let
。我正在查看的代码是:
function slideRightLoop() {
let work = [];
for (var n = 1; n < 5; n++) {
let next = (n + 1 < 5) ? n + 1 : 1;
let el = document.querySelector(".position_" + n)[0];
var change = function change () {
el.classList.add("position" + next);
el.classList.remove("position_" + n);
}
work.push(change);
}
work.forEach(function (n) {
return n();
});
}
解决方案
您可以将其放入https://babeljs.io/repl/并查看转换为的内容。最简单的方法是使循环体成为一个接受所有循环变量作为参数的函数:
function slideRightLoop(n, work) {
var next = (n + 1 < 5) ? n + 1 : 1;
var el = document.querySelector(`.position_${n}`);
var change = function change () {
el.classList.add(`position_${next}`);
el.classList.remove(`position_${n}`);
}
work.push(change);
}
function slideRight() {
var work = [];
for (var n = 1; n < 5; n++) {
slideRightLoop(n, work);
}
work.forEach(function (n) {
return n();
});
}
推荐阅读
- amazon-web-services - AWS 负载均衡器日志中的日志标头或在 5xx 系列上执行操作
- python - 将 popen 子进程上的标准输入重定向到 raw_input ?对于蟒蛇 2.7
- python - 如何捕获基于 ipython 的 jupyter notebook 中打印的所有内容?
- python - How to use variable names iteratively in a loop in python/pandas
- sharepoint - Login failed for User when using Database connection in Owin Startup class
- typescript - TypeScript: Exclude external types from the build output
- c# - Conditional inheritance: base class depend on environment variable
- mysql - How to import a 10GB file to MySQL?
- c++ - 在 cpp 中使用 for_each 循环遍历数组
- google-bigquery - 通过查询从 BigQuery 表中删除一个月数据