Мне нужно некоторое объяснение о некотором синтаксисе - PullRequest
0 голосов
/ 18 июня 2019

Я видел такой код в одной из документации Google по картам Google. Мой вопрос о слушателе. Вместо функции обратного вызова, переданной сразу после действия click, вызывается функция showArrays(), но ничего не передается в качестве параметра. С другой стороны, функция showArrays() использует событие в качестве параметра. Пожалуйста, объясните мне этот тип вызова функции.

element.addListener('click', showArrays);
  //some code here
}


 function showArrays(event) {
  // some code here
 }

Ответы [ 4 ]

0 голосов
/ 18 июня 2019

Метод addEventListener всегда отправляет объект «событие» в качестве аргумента функции обратного вызова. Когда вы используете анонимную функцию, это очевидно:

element.addEventListener('click', function(event) {
    // some code here
});

Но когда вы отправляете методу addEventListener ссылку на функцию, которую вы хотите вызвать, когда происходит событие (в вашем случае это ссылка на функцию showArrays), addEventListener отправляет объект «событие» в качестве аргумента этой функции только на себя. Поэтому, хотя это не очевидно, но объект «событие» автоматически отправляется в функцию showArrays.

element.addEventListener('click', showArrays); // the event object will be sent automatically

И у вас будет доступ к объекту «событие» внутри функции showArrays. Но, разумеется, в объявлении функции showArrays у вас должен быть параметр для перехвата объекта «событие».

function showArrays() {} // it's not going to work
function showArrays(event) {} // it will work
0 голосов
/ 18 июня 2019

Обратите внимание, что в строке element.addListener('click', showArrays) showArrays НЕ имеет скобок после него. Это означает, что это не называется. Вместо этого вся функция передается в качестве параметра методу addListener.

Слушатели событий в JS будут использовать функцию-обработчик, которую вы предоставляете, когда вы присоединяете их с помощью addListener (или, как правило, addEventListener), и, когда происходит событие, они будут вызывать эту функцию и передавать ей объект события.

Другими словами, showArrays не вызывается до тех пор, пока не будет нажат элемент, и все прослушиватели событий по своей сути передают объект события в этой точке, детализируя конкретные свойства события.

0 голосов
/ 18 июня 2019

Один из синтаксических случаев для описания функции:

var showArrays = function (event) {
  // of the code here
}

, и именно это значение аргумента использует метод addEventListener и даже другие функции, такие как setTimeout или setInterval, среди прочих.

0 голосов
/ 18 июня 2019

Думайте о названиях функций как о самих переменных. showArrays - это переменная, которая при получении события что-то с ним делает.

Вы можете передать имя функции в качестве параметра в addListener, чтобы он мог вызывать обратный вызов при щелчке элемента. Важно отметить, что вы не вызываете функцию в первой строке, а просто передаете ссылку на эту функцию.

Вы можете показать это свойство в консоли браузера с помощью этого теста:

function test() { console.log("Test was called"); }

Обратите внимание, если вы говорите var x = test, на консоли ничего не печатается. Но если вы скажете var x = test(), вы увидите отпечаток. Наконец, если вы сделаете var x = test; x(), вы увидите распечатку, потому что вы вызвали тестовую функцию после присвоения ей нового имени.

...