Есть ли возможный способ получить доступ к этой переменной из обратного вызова? - PullRequest
0 голосов
/ 27 марта 2020

Как получить доступ к potatos из теста обратного вызова, невозможно изменить анонимную функцию potatos? Привязка и так далее не работает, у кого-нибудь есть идея?

//This cannot be changed
!function(a){
    //
    let potatos = {
        count: 999
    }
    //
    let garden = {
        /**
         * 
         */
        callbacks: [],
        /**
         * 
         */
        showInfo: function() {
            this.callbacks.forEach((cb) => {
                cb();
            })
        } 
    }
    //
    global.garden = garden;//or window.garden
}();
/**
 * 
 */
function test() {
    console.log(potatos);//Error
}

garden.callbacks.push(test);
garden.showInfo();

1 Ответ

0 голосов
/ 27 марта 2020

Нет. JavaScript использует лексическую область действия для переменных.

test объявляется вне области действия, в которой существует potatoes. Он не может получить доступ к этой переменной.

...