Javascript MediaWiki的ES6到ES3转换(foreach()方法和扩展运算符)

Javascript MediaWiki的ES6到ES3转换(foreach()方法和扩展运算符),javascript,Javascript,我希望通过MediaWiki在控制台中执行以下经过测试的ES6代码: 但它未能通过MediaWiki执行,因为其最新版本(1.33.0)据称: 我假设const可以变成var 我在W3schools中读到,forEach()是ES5,但我可以用for循环来代替它 我错过了在ES3中通过扩展运算符(…)替代阵列扩展的方法。 Google搜索“数组扩展ES3”(不带引号)没有提供如何在ES3中扩展数组的示例(可能术语不同?) 如果可能,在ES3的限制范围内,您将如何使用它进行阵列扩展?您的代码: “

我希望通过MediaWiki在控制台中执行以下经过测试的ES6代码:

但它未能通过MediaWiki执行,因为其最新版本(1.33.0)据称:

我假设
const
可以变成
var

我在W3schools中读到,
forEach()
是ES5,但我可以用
for
循环来代替它

我错过了在ES3中通过扩展运算符(
)替代阵列扩展的方法。
Google搜索“数组扩展ES3”(不带引号)没有提供如何在ES3中扩展数组的示例(可能术语不同?)

如果可能,在ES3的限制范围内,您将如何使用它进行阵列扩展?

您的代码:

“严格使用”;
函数toConsumableArray(arr){返回ArrayWithout-Holes(arr)| | | | | | | | | | | | | | | | |()}
函数_nonIterableSpread(){抛出新类型错误(“传播不可iterable实例的尝试无效”);}
函数_iterableToArray(iter){if(Object(iter)中的Symbol.iterator | | | Object.prototype.toString.call(iter)===“[Object Arguments]”)返回数组.from(iter);}
函数_arraywhithoutholes(arr){if(Array.isArray(arr)){for(vari=0,arr2=newarray(arr.length);isup”).forEach(函数(footnote,i){
var li=document.createElement(“li”);
li.append.apply(li,_toConsumableArray(footnote.childNodes));//移动内容
表1.儿童(李);
footnote.textContent=i+1;
});

你好,谢谢。我投了赞成票。你认为我能改进这个问题吗?不管怎样,谢谢你。@ShadowyShade你的问题很广泛。堆栈溢出的目标是建立一个问题和答案库,供未来的访问者使用。未来的访问者不太可能像你一样尝试,所以这个问题对网站没有任何价值。如果你想让你的问题变得非常具体(比如“如何在ES5中使用
…footnote.childNodes
),那么你的问题也可能对其他人有益。(但上面的例子可能已经在某个地方得到了回答。)(但不是我的反对票。)
Array.prototype.forEach
是ES5,但是
NodeList.prototype.forEach
document.querySelectorAll
返回一个
NodeList
,而不是一个数组)是一个浏览器API,与特定的JavaScript版本无关。不过,调用方法的概念是有效的ES3,因此,如果您只需要将代码解析为ES3,而实际上不需要与旧引擎兼容,那么无论如何都可以。对于旧浏览器,我猜您需要
NodeList.prototype.forEach
Element.append
polyfills。
const list = document.querySelector("#footnotes_list");
document.querySelectorAll(".footnote>sup").forEach((footnote, i) => {
    const li = document.createElement("li");
    li.append(...footnote.childNodes); // move content
    list.appendChild(li);
    footnote.textContent = i+1;
});
"use strict";

function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }

function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }

function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }

function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }

var list = document.querySelector("#footnotes_list");
document.querySelectorAll(".footnote>sup").forEach(function (footnote, i) {
  var li = document.createElement("li");
  li.append.apply(li, _toConsumableArray(footnote.childNodes)); // move content

  list.appendChild(li);
  footnote.textContent = i + 1;
});