Каждая функция в яваскрипт является объектом класса 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, в качестве данных:
Вообще нужно добавить в эту же статью три способа создания функций:
1)Через new (и Function должно начинаться с большой буквы)
2)анонимные функции function () {} (function с маленькой буквы)
3)обычные function func () {}
Упомянуть также про переменную arguments.
Неполная статья, учитывая что на неё прямая ссылка из Справочника по JavaScript.
Полностью поддерживаю, на счёт того что статья очень неполная.
В справочнике таким статьям не место.
Пусть лучше ничего не будет, чем недосказанности.
Я б ещё упомянул про то, что length выдаёт количество параметров, которые при объявлении функции были указаны.
То есть arguments.length и func.length скорей всего будут отличаться (потому что иногда вообще при объявлении функции не пишут параметры явно).
функция выдаст массив из двух элементов.
a[0] - будет равно 2
a[1] - будет равно 4
а ещё функция может быть индексом массива =)))))
проверьте:
Ой, извиняюсь, внизу заметил ссылочки)))
Но тем не менее существование таких вещей стоило бы и в описании привести.
Я недавно изучаю JS) Почему перед названиями параметров функции отсутствует var?
К примеру:
Параметры функции всегда становятся её локальными переменными, поэтому var там ни к чему...
Потому что X и Y - это аргументы, а не переменные.
Можете объяснить подсказать литературу вот такого синтаксиса (function() {})();
Таким способом создается замыкание, которое тут же исполняется.
Основная идея здесь в том, что после каждого вызова внутри такой конструкции возникает как бы замкнутая на самой себе область видимости (каждый раз - новая) со своими собственными переменными, значения которых сохраняются даже после того, как сама функция-контейнер отработала.
Подробнее здесь
Вместо замыкания вида
можно использовать типа
Это позволит сэкономить один символ ценой одной логической операции. В принципе нафиг не стоит ломать над этим голову, просто если встретите - то знайте, это - замыкание, такое же как и первое. Единственная разница - это возвращаемое значение.
люди нужна помощь, плиз, подскажите как сделать функцию чтобы при нажатии на кнопку увеличивалась ширина div, каждый раз
Забыли про Function.propotype.bind - смена контекста (this) в функции
function a () {
console.log(this.b)
}
a() // undefined
var c = a.bind({b:42})
c() // 42
Кто-нибудь знает, что за конструкция
!function - в самом начале jquery используется.
Смотри мой коммент выше, про замыкания.
Опытным путем нашел ....
!function(a,b)
{
}
(arguments);
Это практически тоже самое, что и просто
(
function(a,b)
{
}
)(arguments);
По второму варианту только и очень много вопросов и ответов было в инет...
А вот по варианту с !function(){}(); почему то ничего нету ...
Нашел чисто по наитью, точно что это такое и в чем разница - не знаю ...
Если кто знает - отпишитесь плиз ...
Да разницы нет. Если тебе не нужно значение, которое вернёт функция из замыкания, а просто нужно выполнить функцию - то используй конструкцию с !. В принципе - это всего лишь экономия одного символа не более. Всё! Иными словами
Так то ! - это ни что иное как логическое отрицание. То самое которе true превращает в false и наоборот. Ну например !3 - это false. Здесь это отрицание вынуждает к вычислению подлежащие выражение. Т.е. сама по себе конструкция:
вычислена не будет. А ! заставляет её вычислиться - чтобы знать, что отрицать. Такие дела. С таким же успехом (но с другими побочными эффектами) можно вместо ! использовать например:
Вот здесь все это очень подробно описано https://learn.javascript.ru/closures-module
люди подскажите нормальный справочник по js чтобы время на этом конченном сайте не тратить