Почему я могу вызвать функцию с аргументом, когда функция определена без параметров?

Добрый день!

Я наткнулся на то, чего никогда не видел в сфере JavaScript, но, думаю, это очень легко объяснить тем, кто лучше знает язык. Ниже у меня есть следующая функция: (Код взят из книги: «Секреты ниндзя JavaScript»)

function log() {
  try {
    console.log.apply(console, arguments);
  }
  catch(e) {
    try {
      opera.postError.apply(opera, arguments);
    }
    catch(e) {
      alert(Array.prototype.join.call(arguments, " "));
    }
  }
}

Как вы можете видеть, функция определена с пустым списком параметров, но я был совершенно озадачен, когда увидел в конце книги, что они действительно используют упомянутую функцию следующим образом ...

var x = 213;
log(x); //Hmmm, I thought this function had an empty parameter list.

Может кто-нибудь объяснить мне, почему этот вызов функции разрешен / возможен? Какие концепции в JS поддерживают эту функциональность? Заранее спасибо, я очень запутался.

С уважением,

Ответы на вопрос(4)

Ваш ответ на вопрос