Анонимные функции могут эффективно гарантировать, что JavaScript записан на странице, не вызывая загрязнения глобальных переменных.
Это работает очень хорошо и красиво при добавлении JavaScript на страницу, которая не очень знакома.
1. Что такое анонимная функция?
Обычно есть три способа определения функции в JavaScript:
Оператор ключевого слова функции:
Функция fnmethodName (x) {alert (x);}
Функциональные литералы:
var fnmethodname = function (x) {alert (x);}
Function () конструктор:
var fnmethodname = new Function ('x', 'alert (x);')
Приведенные выше три метода определяют ту же функцию метода fnmethodName.
Первый - наиболее часто используемый метод. Последние два должны скопировать функцию с переменной fnmethodName, и эта функция не имеет имени, то есть анонимной функции.
На самом деле, довольно много языков имеют анонимные функции.
2. Разница между функциональными литералами и конструкторами функции ()
Хотя буквальная функция является анонимной функцией, синтаксис позволяет указать с каким -либо именем функции. Его можно назвать самим собой при написании рекурсивной функции, но это не может быть сделано с помощью конструктора функции ().
var f = function fact (x) {if (x <= 1) return 1; иначе вернуть x*fact (x-1); };
Конструктор Function () позволяет динамическому созданию и компиляции кода JavaScript во время выполнения. Таким образом, это похоже на глобальную функцию eval ().
Конструктор Function () анализирует корпус функции каждый раз, когда он выполняется и создает новый объект функции. Следовательно, эффективность вызова конструктора функции () в цикле или часто выполняемой функции очень низкая. Напротив, функциональные литералы не перекомпилируются каждый раз, когда они сталкиваются с этим.
При создании функции с конструктором function () она не следует за типичной областью, она всегда выполняет ее как функцию верхнего уровня.
var y = "global";
function constructfunction () {var y = "local"; вернуть новую функцию («return y»); // не может получить локальную переменную} alert (constructfunction () ()); // Вывод «глобальный» и определение ключевых слов функции имеет свои собственные характеристики и гораздо сложнее в использовании, чем конструкторы function ().
Таким образом, эта технология обычно используется редко.
Функция буквального выражения и определения ключевых слов функции очень похожа.
Учитывая предыдущую разницу, хотя есть сообщения, в которых говорится, что буквальные анонимные функции имеют ошибки в соответствии с определенными двигателями Webkit в рамках OS X 10.4.3,
Но то, что мы обычно называем анонимными функциями, относится к анонимным функциям, которые используют буквальную форму функции.
3. Кодовый режим анонимных функций
Режим ошибки: он не может работать, браузер сообщит об ошибке синтаксиса.
function () {alert (1); } ();
Функциональные литералы: сначала объявите объект функции, а затем выполните его.
(function () {alert (1);}) ();
Преимущественное выражение:
(function () {alert (2);} ());
void оператор:
void function () {alert (3); } () такие же. Хедгер Ван предпочитает третий тип по личным причинам, в то время как в реальных приложениях я вижу и использую первый тип.
4. Применение анонимных функций
Первым предложением в «модуле модуля JavaScript является« глобальные переменные - это дьявол ».
С помощью ключевого слова VAR анонимные функции могут эффективно гарантировать, что JavaScript записан на странице, не вызывая загрязнения глобальным переменным.
Это работает очень хорошо и красиво при добавлении JavaScript на страницу, которая не очень знакома.
Фактически, Yui и соответствующие примеры используют много анонимных функций, и другие библиотеки JavaScript также используют много из них.
Краеугольный камень функционального программирования в JavaScript.
Для получения подробной информации, пожалуйста, см. «Написание красивого JavaScript с технологией функционального программирования» и «Руководство по функциональному программированию JavaScript».
Приведенное выше подробное объяснение использования и преимуществ и недостатков анонимных функций в JavaScript - это весь контент, которым я делюсь с вами. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.