Почему я могу вызвать функцию с аргументом, когда функция определена без параметров?
Добрый день!
Я наткнулся на то, чего никогда не видел в сфере 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 поддерживают эту функциональность? Заранее спасибо, я очень запутался.
С уважением,