Javascript 内部函数不';不知道外部范围中定义的变量。为什么?
我试图浏览在线词典的页面。这是我的密码:Javascript 内部函数不';不知道外部范围中定义的变量。为什么?,javascript,nightmare,Javascript,Nightmare,我试图浏览在线词典的页面。这是我的密码: var Nightmare = require('nightmare'); var nightmare = Nightmare({ show: true }); var links = []; function goToLink(linkName){ nightmare .goto(linkName) .evaluate( () => { var href = document.qu
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");
我收到
错误:未定义链接
。链接在var Links=[]中明确定义但是内部函数不知道它。这里发生了什么?问题是evaluate
回调在不同的上下文中调用,并且看不到链接。您可以尝试这样传递它:
(...)
.evaluate( links => {
var href = document.querySelector("span.next a").href;
links.push(href)
return href;
}, links)
(...)
链接
是回调的参数。您必须在evaluate
函数中将其作为第二个参数传递。我可以想象evaluate
将参数字符串化,并在不同的上下文中对其求值。编辑:看到了,菲利克斯。我如何接受评论作为答案?@FelixKling请添加评论作为回应。啊,你可以传递一个论点。酷。