Где определяется аргумент для этой функции обратного вызова JavaScript? - PullRequest
0 голосов
/ 25 сентября 2018

Я некоторое время путался с функциями обратного вызова и нашел простой фрагмент кода, который иллюстрирует мою путаницу.Это из w3schools :

var str = "Mr Blue has a blue house and a blue car";
var res = str.replace(/blue|house|car/gi, function (x) {
    return x.toUpperCase();
});

Это типичный пример моей путаницы с обратными вызовами.Я не понимаю, как x в аргументе function(x) заполняется.Я смотрю документацию по MDN и вижу, что соответствия передаются x, но я не понимаю принцип, лежащий в основе.Существует ли правило типа «аргумент функции обратного вызова заполняется предыдущим аргументом» или это поведение специфично для String.replace ()?Как я могу экстраполировать и применить это ко всем функциям обратного вызова, которые я нахожу?

1 Ответ

0 голосов
/ 25 сентября 2018

Функция replace вызывается и передается два аргумента.

Функция replace (которая предоставляется базовым механизмом JS, поэтому ее исходный код не отображается в вашем вопросе) делает stuff .

Среди прочего он вызывает функцию, которую вы передаете в качестве второго аргумента (newSubstr).Когда replace вызывает newSubstr, replace передает newSubstr аргумент.

Существует ли правило типа "аргумент функции обратного вызова заполняется предыдущим аргументом"

Нет.Он заполняется любым способом, для которого предназначен код, вызывающий обратный вызов.

это поведение, специфичное для String.replace ()?

Да

Как я могу экстраполировать и применить это ко всем функциям обратного вызова, которые я нахожу?

Вы не можете.

Вместо этого прочтите их руководства или исходный код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...