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请添加评论作为回应。啊,你可以传递一个论点。酷。