2016-10-29 3 views
0

Я скачал источник открытого код расслоения плотного, где разработчик часто создавать новую функцию таким образом:Есть ли разница в этих двух функциях?

var log = msg => div.innerHTML += "<br>" + msg; 

Итак, есть разница с этим ниже?

function log(msg){ 
    div.innerHTML += "<br>" + msg; 
} 
+1

Существуют некоторые различия между функциями стрелок и функциями 'function foo() {}'. См. Https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions –

+1

этот пост http://stackoverflow.com/questions/22939130/when-should-i-use-arrow- функции-в-ECMAScript-6 –

ответ

0

Есть некоторые различия между функциями стрелок и функциями function foo() {}. См. https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions.

Несколько я могу вспомнить с верхней частью моей головы:

  • function foo() {} функции определение поднимается, а значит, вы можете вызвать такую ​​функцию в любом месте в области, которая содержит его определение. Это не относится к переменному, содержащей функции, для которых только декларации поднимается
  • функции стрелки связывает this лексический, что простые слова означает, что они не вносят свои собственную this переменных. Вместо этого, они просто близко над ближайшим this переменной из сферы ограждающей функции
  • стрелки не имеют arguments local variable доступны для использования в организме

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

Смежные вопросы