В JavaScript функция имеет тип “function”. Оператор [typeof] для функции возвращает строку [“function”], что делает функции особым типом данных, отличным от объектов, чисел, строк и других типов.
function myFunc() {
return 'привет';
}
console.log(typeof myFunc); // 'function'
console.log(typeof function() {}); // 'function'Функция в JavaScript — это особый тип данных, который можно “трогать руками”, передавать как подарочную коробку, которую можно открыть (вызвать) в любой момент! 🎁
Функции в JavaScript имеют специальный тип [“function”], который отличает их от всех других типов данных:
function greet() {
return 'Привет!';
}
const arrowFunc = () => 'Привет!';
const obj = {
method() { return 'Привет!'; }
};
console.log(typeof greet); // 'function'
console.log(typeof arrowFunc); // 'function'
console.log(typeof obj.method); // 'function'// Функция может быть значением переменной
const myFunction = function() {
return 'результат';
};
console.log(typeof myFunction); // 'function'
// Функция может быть передана как аргумент
function execute(func) {
return func();
}
execute(myFunction); // 'результат'function myFunc() {}
// Функция — это объект!
console.log(myFunc instanceof Object); // true
console.log(typeof myFunc); // 'function'
// У функции могут быть свойства
myFunc.customProperty = 'значение';
console.log(myFunc.customProperty); // 'значение'// Функцию можно:
// 1. Присвоить переменной
const func1 = function() {};
// 2. Передать как аргумент
function callFunc(fn) { fn(); }
// 3. Вернуть из другой функции
function createFunc() {
return function() { return 'создано'; };
}
// 4. Хранить в массиве
const funcs = [function() { return 1; }, function() { return 2; }];function processData(data, callback) {
// Проверяем, что callback — функция
if (typeof callback === 'function') {
return callback(data);
}
throw new Error('Callback должен быть функцией');
}function apiCall(url, successCallback, errorCallback) {
if (typeof successCallback !== 'function') {
throw new Error('successCallback должен быть функцией');
}
if (typeof errorCallback !== 'function') {
throw new Error('errorCallback должен быть функцией');
}
// ... логика API вызова
}// ❌ Ошибка — думать, что функция это обычный объект
const obj = {};
const func = function() {};
console.log(typeof obj); // 'object'
console.log(typeof func); // 'function' (особый тип!)// ❌ Ошибка — не проверить тип
function bad(data, callback) {
return callback(data); // Может быть ошибка, если callback не функция
}
// ✅ Правильно — проверить тип
function good(data, callback) {
if (typeof callback === 'function') {
return callback(data);
}
return data;
}Понимание типа функции помогает правильно работать с функциями как со значениями и избегать ошибок при передаче их в качестве аргументов! 💪
Хотите больше статей для подготовки к собеседованиям? Подписывайтесь на EasyAdvice, добавляйте сайт в закладки и совершенствуйтесь каждый день 💪