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

Я пытаюсь понять, что именно означает объявление, определение и инициализацию переменной.

let a;      // If this is a declaration

let a = 22; // and this is initialising

как определить переменную?

можно ли инициализировать функцию?

1 Ответ

0 голосов
/ 15 мая 2018

как определить переменную?

С объявлением переменной. Нет никакого различия между определением переменной и объявлением переменной. Ну, ладно, есть один случай определения, но не объявления переменной: присвоение необъявленного идентификатора в свободном режиме, что я и называю Ужас неявных глобалов , потому что он создает глобальная переменная без какого-либо объявления. Не делай этого. : -)

Как мне объявить функцию?

Мой ответ здесь на другой вопрос перечислены различные способы создания функций в JavaScript. Одним из таких способов является объявление функции.

Несколько быстрых примеров, но я сомневаюсь, что этот вопрос или ответ будут удалены:

Объявление функций:

function foo() {
}

Обратите внимание, что мы не делаем x = перед ним. Все, что было бы замечательно в качестве выражения, сделало бы его больше не декларацией.

Выражение «анонимная» функция (которая, несмотря на термин, иногда создает функции с именами):

x = function() { };
//  ^^^^^^^^^^^^^^--- this is the expression

doSomethingWith(function() { });
//              ^^^^^^^^^^^^^^--- this is the expression

Именованная функция Expression

x = function foo() { };
//  ^^^^^^^^^^^^^^^^^^--- this is the expression

doSomethingWith(function foo() { });
//              ^^^^^^^^^^^^^^^^^^--- this is the expression

Инициализатор функции доступа (ES5 +):

obj = {
    get foo() {         // << This is an accessor, specifically a getter
    },                  // <<
    set foo() {         // << This is an accessor, specifically a setter
    }                   // <<
}

Выражение функции стрелки (ES2015 +) (которое, как и выражения анонимной функции, не содержит явного имени и все же может создавать функции с именами); это могут быть подробные { .. } телом) или краткие (без {}):

x = () => { };
//  ^^^^^^^^^--- Verbose arrow function

doSomethingWith(() => { });
//              ^^^^^^^^^--- another verbose arrow function

y = () => expressionGoesHere;
//  ^^^^^^^^^^^^^^^^^^^^^^^^--- Concise arrow function

doSomethingWith(() => expressionGoesHere);
//              ^^^^^^^^^^^^^^^^^^^^^^^^--- another concise arrow function

Объявление метода в инициализаторе объекта (ES2015 +)

obj = {
    foo() { // << This is the method declaration
    }       // <<
};

Объявления конструктора и метода в классе (ES2015 +)

class Example {
    foo() { // << This is the method declaration
    }       // <<
}

можно ли инициализировать функцию?

Вы можете инициализировать переменную (или свойство) со ссылкой на функцию:

let a = function() { };           // Variable
someObject.b = function() { };    // Object property
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...