0

Есть <select> c id='adresses'
При загрузке страницы пытаюсь вывести в консоль всё что есть в select c помощью jquery такой конструкцией

$('#adresses option').each( function() {
    console.log(this.text);
});

И всё отображается в консоли
Но если использую такую конструкцию

$('#adresses option').each( ()=> {
    console.log(this.text);
});

Выдает тысячу undefined

В чём разница?

Grundy
  • 81,538
grayraw
  • 43

1 Answers1

1

Вас сейчас по перенаправляют, задублируют ваш вопрос, но вопрос останется нерешённым. По простому:

В первом случае this будет относится к одному из элементов $('#adresses option') поэтому у него есть свойство .text

Во втором случае this будет относится скорей всего к объекту window у которого свойства .text нет (подобно тому, как если бы вы вызывали внутри функции window.text), поэтому undefined

При краткой записи функции ()=> {}, this внутри функции не будет относится к этой функции, а будет относится к контексту выше, в вашем случае к объекту window

developerus
  • 507
  • 2
  • 13
  • На https://learn.javascript.ru/es-function прекрасно написано Внутри функций-стрелок – тот же this, что и снаружи – developerus Oct 16 '16 at 17:04
  • Про this, как раз во второй ссылке в комментариях под ответом расписано – Grundy Oct 16 '16 at 17:05