我试图更改这个(工作良好)函数,以便能够使用节点+ ES8 (没有关键字函数)运行,但是我想不出如何做到这一点。
window.getElementsByXPath = function getElementsByXPath(expression, scope) {
scope = scope || document;
var nodes = [];
var a = document.evaluate(expression, scope, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
for (var i = 0; i < a.snapshotLength; i++) {
nodes.push(a.snapshotItem(i));
}
return nodes;
};(这是一个来源于node.js的文件,用于傀儡+铬无头)
发布于 2018-02-02 17:40:16
只需删除关键字function和函数名如下:
window.getElementsByXPath = (expression, scope) => {
scope = scope || document;
var nodes = [];
var a = document.evaluate(expression, scope, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
for (var i = 0; i < a.snapshotLength; i++) {
nodes.push(a.snapshotItem(i));
}
return nodes;
};这个叫做:箭头函数。
资源
发布于 2018-02-02 17:40:55
使用箭头函数语法:var foo = (param) => { // Do stuff }
使用您的代码:
window.getElementsByXPath = (expression, scope) => {
scope = scope || document;
var nodes = [];
var a = document.evaluate(expression, scope, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
for (var i = 0; i < a.snapshotLength; i++) {
nodes.push(a.snapshotItem(i));
}
return nodes;
};发布于 2018-02-02 18:11:19
如果您想一路走下去,您可以使用迭代器类型而不是快照,立即执行生成器,并使用扩展和短箭头表达式语法。
window.getElementsByXPath = (expression, scope) =>
[...(function * (iter, node) {
while (node = iter.iterateNext()) yield node;
})(document.evaluate(expression, scope || document, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null))];但这并不能使它更易读懂.
function关键字将重新出现,因为生成器目前无法用箭头语法编写。
https://stackoverflow.com/questions/48588087
复制相似问题