Вызов функции без параметров - PullRequest
2 голосов
/ 16 апреля 2020

Я нашел следующее методом проб и ошибок. В основном ошибка. Итак, это Stoopid Question Time ™ ...

Почему Javascript не выдает ошибку при вызове функции без параметров? Зачем вам это нужно?

something // call the function but forgot about the parameters

function something()
{
  // some code here
  alert("Working on it!");
}

1 Ответ

4 голосов
/ 16 апреля 2020

Поскольку функции являются членами первого класса в Javascript - на них можно ссылаться как на любое выражение. Например, может быть, вы хотите сохранить его в другой переменной:

function foo() { console.log('foo'); }

const anotherReferenceToFoo = foo;
anotherReferenceToFoo();

Или, может быть, вы хотели передать саму функцию без ее вызова, например addEventListener:

function foo() { console.log('foo'); }
button.addEventListener('click', foo);
<button id="button">click</button>

Или setTimeout:

function foo() { console.log('foo'); }
setTimeout(foo, 1000);

Ссылка на имя функции без ее вызова является очень полезной техникой. Без этого многие вещи были бы невозможны.

Если у вас есть только строка something, на которой больше ничего нет, это не ошибка по той же причине, что и неиспользуемое выражение не является ошибкой:

'5';

true;

() => 'foo';

console.log('syntax is fine');

Если вы хотите убедиться, что не допускаете подобных ошибок, рассмотрите возможность установки ESLint и применения правила no-unused-expressionions .

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