как определить переменную?
С объявлением переменной. Нет никакого различия между определением переменной и объявлением переменной. Ну, ладно, есть один случай определения, но не объявления переменной: присвоение необъявленного идентификатора в свободном режиме, что я и называю Ужас неявных глобалов , потому что он создает глобальная переменная без какого-либо объявления. Не делай этого. : -)
Как мне объявить функцию?
Мой ответ здесь на другой вопрос перечислены различные способы создания функций в 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