Как Node.js различает несколько параметров, передаваемых функции?

Например, я пишу следующий код:

var http = require('http');

var server = http.createServer(function(req, res) {
  res.end('Hello world!');
});

server.listen(8000, function() {
  console.info('Serever started');
});
  

Однако определение server.listen () выглядит так:

server.listen (порт, имя хоста, невыполненная работа, обратный вызов);

Метод listen () имеет четыре параметра, в то время как в моем коде были переданы только два параметра - порт и обратный вызов. Откуда методу известно, что function () {console.info ('Сервер запущен');} является «обратным вызовом», а не «именем хоста»? Автоматически проверяет тип параметров?

Node.js - нет, а функция работает.

Quentin 07.11.2018 14:21

Функция listen сама распознает типы параметров и перегрузку, поэтому в вашем примере port - это число, hostname, вероятно, строка, backlog, вероятно, строка, а callback - это функция. Затем в теле функции есть логика, которая решает, какой параметр что представляет. В этом и заключается сила динамически типизированных языков

bladekp 07.11.2018 14:28

В примере вы указали второй параметр - это функция, поэтому listen подозревает, что это не hostname или backlog, а callback, и использует его как callback. В языках со статической типизацией, таких как Java, разработчик функций listen был бы вынужден несколько раз перегружать этот метод. Таким образом, в javascript этот метод определяется один раз, в java он определяется как пять или более раз, каждое определение с другим списком параметров

bladekp 07.11.2018 14:36
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
20
0

Другие вопросы по теме