内部函数不知道外部作用域中定义的变量。为什么?
Inner function doesn't know variable defined in outer scope. Why?
我正在尝试浏览在线词典的页面。这是我的代码:
var Nightmare = require('nightmare');
var nightmare = Nightmare({ show: true });
var links = [];
function goToLink(linkName){
nightmare
.goto(linkName)
.evaluate( () => {
var href = document.querySelector("span.next a").href;
links.push(href)
return href;
})
.then((href) => {
goToLink(href);
})
.catch((error) => {
console.error('Error:', error);
});
}
goToLink("http://lexicon.quranic-research.net/data/01_a/000_!.html");
我正在 Error: links is not defined
。链接在 var links = [];
处明确定义,但内部函数不知道。这是怎么回事?
问题是 evaluate
回调是在不同的上下文中调用的,并且没有看到 links
。你可以尝试做的是像这样传递它:
(...)
.evaluate( links => {
var href = document.querySelector("span.next a").href;
links.push(href)
return href;
}, links)
(...)
links
是回调的参数。您必须将其作为 evaluate
函数中的第二个参数传递。
我正在尝试浏览在线词典的页面。这是我的代码:
var Nightmare = require('nightmare');
var nightmare = Nightmare({ show: true });
var links = [];
function goToLink(linkName){
nightmare
.goto(linkName)
.evaluate( () => {
var href = document.querySelector("span.next a").href;
links.push(href)
return href;
})
.then((href) => {
goToLink(href);
})
.catch((error) => {
console.error('Error:', error);
});
}
goToLink("http://lexicon.quranic-research.net/data/01_a/000_!.html");
我正在 Error: links is not defined
。链接在 var links = [];
处明确定义,但内部函数不知道。这是怎么回事?
问题是 evaluate
回调是在不同的上下文中调用的,并且没有看到 links
。你可以尝试做的是像这样传递它:
(...)
.evaluate( links => {
var href = document.querySelector("span.next a").href;
links.push(href)
return href;
}, links)
(...)
links
是回调的参数。您必须将其作为 evaluate
函数中的第二个参数传递。