Каждая функция в яваскрипт является объектом класса Function.
Все аргументы, переданные функции, интерпретируются как имена параметров для создаваемой функции, в порядке их перечисления.
Вызов конструктора Function как функции работает так же, как вызов с new. Иначе говоря, оператор new при вызове Function необязателен.
Пример: Пример создания функции
var multiply = new Function("x", "y", "return x * y")
// или так:
var multiply = new Function("x,y", "return x * y")
var theAnswer = multiply(7, 6);
// более интересные пример работы объекта Function, в качестве данных:
function attr1(x, y) { // определяем функцию и ее механизм выполнения return x + y; } function attr2(x,y) { // определяем функцию и ее механизм выполнения return x * y; } /* передаем в качестве аргументов вышеопределенные функции и возвращаем значение для двух операндов */ function init(define, argument1, argument2){ return define(argument1, argument2); } document.write(init(attr1, init(attr1, 5, 5), init(attr2, 5, 5))); // вызываемВообще нужно добавить в эту же статью три способа создания функций:
1)Через new (и Function должно начинаться с большой буквы)
2)анонимные функции function () {} (function с маленькой буквы)
3)обычные function func () {}
Упомянуть также про переменную arguments.
Неполная статья, учитывая что на неё прямая ссылка из Справочника по JavaScript.
Полностью поддерживаю, на счёт того что статья очень неполная.
В справочнике таким статьям не место.
Пусть лучше ничего не будет, чем недосказанности.
Я б ещё упомянул про то, что length выдаёт количество параметров, которые при объявлении функции были указаны.
То есть arguments.length и func.length скорей всего будут отличаться (потому что иногда вообще при объявлении функции не пишут параметры явно).
qwerty = function(a,b) { return [this.length, arguments.length] }функция выдаст массив из двух элементов.
a[0] - будет равно 2
a[1] - будет равно 4
а ещё функция может быть индексом массива =)))))
проверьте:
Ой, извиняюсь, внизу заметил ссылочки)))
Но тем не менее существование таких вещей стоило бы и в описании привести.
Я недавно изучаю JS) Почему перед названиями параметров функции отсутствует var?
К примеру:
function attr1(var x,var y) { return x + y; }Параметры функции всегда становятся её локальными переменными, поэтому var там ни к чему...
Отправить комментарий
Приветствуются комментарии:- Полезные.
- Дополняющие прочитанное.
- Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.Для остальных вопросов и обсуждений есть форум.