В чем разница между тремя типами объявлений функций в JavaScript? - PullRequest
0 голосов
/ 09 сентября 2018

Мне известны 3 различных типа объявлений функций в Javascript, и я знаю незначительные различия, но я не знаю, почему это хорошо, зачем нам все три?

function MyObject{
    function SomeName(){}

    this.SomeName = function(){}

    var SomeName = function(){} 
}

Ответы [ 3 ]

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

Они на самом деле похожи. Вы спрашиваете о различиях в выражениях функций и объявлениях функций

// function declaration
function add(a, b) {
  return a+b; 
}

// function expression
var add = function(a, b) {
  return a+b;
}

Существует еще существенная разница:

Подъемно : Когда загружается файл javascript, все функции, написанные с помощью объявлений функций, поднимаются, в основном «известные», перед выполнением любого кода. Таким образом, вы можете вызвать функцию ранее в программе и объявить ее позже. Это будет работать.

Что не так с «выражениями функций». Если вы вызываете функцию до того, как ее выразили, она не будет работать.

// function declaration works
add(5, 10);
function add(a, b) {
  return a+b;
}

// function expression doesn't work
subtract(3, 9);
var subtract = function(a, b) {
  return a - b;
}

Таким образом, вы должны объявить выражения функций перед их использованием.

0 голосов
/ 09 сентября 2018
  1. function SomeName(){} ==> Когда вы создаете такую ​​функцию, это целое поведение, или вы можете сказать, что это функциональность этой функции в целом.

  2. this.SomeName = function(){} ==> Это вы используете для определенного экземпляра времени, а затем используете вывод этой функции как любой тип данных.

  3. var SomeName = function(){} ==> function SomeName(){} и var SomeName = function(){} не так уж значительны. Как только вы нуждаетесь в том, как вы выполняете и используете его. В качестве третьей версии, которую вы используете, вы присваиваете ей какое-то значение. Таким образом, он может потреблять больше памяти, чем у версии 1. Кроме этого, я не вижу никакой разницы между ними. Более подробно, применяя var к любой функции, вы назначаете тип данных для функции, которая ограничивает ее вывод в некотором контексте.

Надеюсь, я кратко объяснил вашу концепцию. Любое предложение или вопрос, я хотел бы ответить.

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

function SomeName(){}: вы не можете назначить SomeName другой вещью; функция поднимается до ближайшей области видимости функции, что позволяет вам объявить ее ниже в коде, пока вы используете вверху

this.SomeName = function(){}: вы открываете эту функцию, чтобы к ней можно было получить доступ через MyObject.SomeName

var SomeName = function(){}: вы можете присвоить SomeName другой вещи; имя переменной переносится в ближайшую область видимости функции, но использование его до объявления вызовет SomeName - это не ошибка функции

Просто для удовольствия, есть также

const SomeName = function(){}: вы не можете присвоить SomeName другой вещи; использование его до объявления приведет к тому, что SomeName не определено ошибка

let SomeName = function(){}: вы можете назначить SomeName другой вещи; использование его до объявления приведет к тому, что SomeName не определено, ошибка

Предпочтение

Лично я обычно использую export function SomeName(){}, но const SomeName = () => {}, когда не сразу экспортирую функцию.

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