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