Учебная вечеринка два дня назад, за исключением еды, питья, веселья и спящей чушь, это было так радостно. Было действительно лучше повеселиться в одиночестве, чем повеселиться.
PS: Если вы заканчиваете или собираетесь получить высшее образование, вы можете собраться вместе, если у вас есть время. После окончания учебы у вас будет слишком мало времени, чтобы собраться вместе.
Теперь у меня есть время, чтобы что -то посмотреть и что -то подвести итог. Поскольку я посмотрел на функцию JavaScript несколько минут назад, я потратил время на сумму соответствующих частей функции. Конечно, некоторые части в нем - мое собственное понимание. Если есть неверное понимание, пожалуйста, укажите это.
В этом разделе я буду говорить с вами о заявлении о декларации функции заранее на основе моего собственного понимания.
Примечание. В некоторых местах это также называется продвижением функции. Переводы разные, значения одинаковы, просто понимайте их. Долгое живое понимание!
Перед тем, как поболтать о объявлении о декларации функции заранее, необходимо ввести несколько методов определения функции, с которыми следует знакомо большинство друзей. Если вы понимаете или не хотите понимать, счастливо катитесь. Если вы не знаете или не хотите с ним познакомиться, замедлитесь и начните.
Методы определения функций
Есть три основных способа определения функций:
1. Объявление функции
2. Экспрессия функции экспрессии функции)
3. Новый конструктор функции
Среди них часто используются методы определения функций для объявлений функций и выражений функций. Эти два метода имеют очень тонкие различия и связи, и использование этих двух методов легко запутаться. Следовательно, в этой статье в основном суммируются соответствующие точки знания этих двух методов определения функций. Конечно, тема этой статьи все еще о функциях заранее.
Типичный формат для объявлений функций:
Функция functionName (arg1, arg2, ...) {<!-тело функции->}Функциональные выражения
• Типичный формат выражений функции:
var variable = function (arg1, arg2, ...) {<!-тело функции->}Выражение функции, содержащее имена (кронштейны, имена функций):
var variable = functionName (arg1, arg2, ...) {<!-тело функции->}Функциональные выражения с именами, такими как указанные выше, можно использовать для рекурсии:
var variable = functionName (x) {if (x <= 1) return 1; else return x*functionname (x);}Заявление о предварительном графике
Заявление var заранее
Друзья должны были услышать о заявлении заранее. Я хотел бы повторить его здесь, потому что заранее утверждение является важным отличием между объявлением функции и выражением функции, и для нас имеет большое значение для дальнейшего понимания этих двух методов определения функции.
Но до того, как объявление функции будет заранее, необходимо сказать, что объявление VAR заранее.
Сначала дайте ранний вывод оператора VAR:
Переменные определяются в сценарии или функции, которая объявляет их, и оператор объявления переменной будет выдвигаться в верхней части сценария или функции. Тем не менее, операция инициализации переменной все еще выполняется в исходном операторе VAR, и значение переменной не определен до того, как оператор будет объявлен.
Три простых точка могут быть обобщены из приведенного выше заключения:
1. Объявление переменной будет продвинуто до вершины функции;
2. Это просто то, что объявление продвигается, инициализация не продвигается, и инициализация все еще инициализируется в исходном месте инициализации;
3. Значение переменной не определено перед объявлением.
Давайте возьмем пример:
var cassome = 'красиво'; функционировать Pressometougly () {alert (красивый); var parressome = 'ugly'; Alert (красивый);} pressometougly ();Правильный вывод:
Сначала вывод неопределенного, затем выводит уродливой.
Вывод ошибки:
Сначала вывод с красотки, а затем выводит некрасиво.
Это именно то, что декларация переменной играет заранее. Красивая локальная переменная определяется во всем теле функции. Красивая переменная в корпусе функции подавляется. О нет, он охватывает красивую глобальную переменную с одинаковым именем, потому что объявление переменной продвигается, то есть VAR GARSTOME продвигается к вершине функции, что похоже на это:
var cassome = 'красиво'; function pressometougly () {var parserme; бдительность (красивый); var parressome = 'ugly'; Alert (красивый);} pressometougly ();Итак, перед предупреждением (красивой), уже есть декларация VAR, как упоминалось выше
Значение переменной не определена до объявления
Таким образом, первый вывод неопределен.
И из -за вышеупомянутого:
Просто объявление продвигается, инициализация не продвигается, инициализация по -прежнему инициализация в исходном месте инициализации.
Таким образом, второй вывод ужасен.
Функциональное объявление заранее
В следующих двух мы начнем общаться о объявлении о объявлении функции заранее в сочетании с объявлением VAR.
Друзья должны быть знакомы с объявлением о декларации функции заранее, поэтому приведите пример, который очень знаком.
saytruth (); <!-Объявление функции-> функция showtruth () {alert ('myvin-это красивый.');} saytruth (); <!-Функция выражения-> var showtruth = function () {alert ('myvin-это красивый.');};};};};};};};};};};Все друзья знают, что метод определения функции декларации функции, то есть первая метод вызова, вызывший выше, и правда, что Мивин красивый. может быть выведен, потому что оператор вызова функции может быть размещен после объявления функции. Для метода определения функции выражения функции, то есть метод второго вызова функции, выше, не может вывести правильный результат Myvin красивый.
В сочетании с вышеупомянутым Мивин красивый. Пример, заключение объявления функции заранее кажется простым для понимания. Разве не только то, что при использовании метода определения функции объявления функции функциональный вызов может быть размещен в любом месте. Да, ты прав, мой друг, я не знаю, как тебя опровергнуть. Тогда позвольте мне сказать вам еще несколько слов.
Из того, что сказал мой друг
Разве это не то, что при использовании методов определения функции для объявлений функций вызовы функций могут быть размещены где угодно?
Это может привести к небольшому:
Когда объявление функции продвигается, объявление функции и корпус функции продвинуты.
и:
Объявления функций выполняются в течение периода предварительного выполнения, то есть объявления функций выполняются, когда браузер готов к выполнению кода. Поскольку объявление функции выполняется в течение ожидаемого периода выполнения, объявление функции больше не выполняется в течение периода выполнения (есть люди, которые уже выполнили ее, и, естественно, больше не будут выполнять).
Выше это точка.
Почему экспрессия не может быть объявлено заранее
Давайте поговорим о еще одной вещах: почему выражения функций не могут быть объявлены заранее, как объявления функций?
К счастью, я знаю немного, иначе я действительно не знаю, как мне ответить?
Хим, согласно моему пониманию, позвольте мне объяснить вам:
Мы сказали выше оператора VAR заранее, обратите внимание на то, что я упомянул выше:
Просто объявление продвигается, инициализация не продвигается, инициализация по -прежнему инициализация в исходном месте инициализации.
Хорошо, давайте разместим выражение функции здесь:
var variable = function (arg1, arg2, ...) {<!-тело функции->}Выражения функций - это способ записать определения функций в выражения (это, по -видимому, пустая трата времени, но это эффективно для интерпретации и понимания того, что выражения функций не могут быть объявлены заранее), то есть назначать объект функции переменной, поэтому мы записываем выражение функции, как это:
var variable = 5, увидев это, возможно, друзья поймут, что одно состоит в том, чтобы присвоить значение переменной, а другая - назначить объект функции переменной. Следовательно, для выражений функции назначение переменных не будет продвинуто, то есть функция (arg1, arg2, ...) {<!-тело функции->} не будет продвинуто, поэтому определение функции не выполняется, поэтому выражения функций не могут быть предварительно обнаружены, как объявления функции.
Анализ раннего экземпляра функции объявления
То же предложение, реальность из примера:
saytruth (); if (1) {function saytruth () {alert ('myvin is is is is a)};} else {function saytruth () {alert (' myvin is argly ')};}When the browser does not throw an error (please test yourself whether the corresponding browser has thrown an error. Why don’t I test it? Can I say I’m lazy?), the browser’s output result is myvin is ugly (I don’t want to admit it, but the truth is that, ahhhhh, should I read more if I am ugly??????).
Почему? Конечно, заявление было продвинутым. Поскольку объявление функции продвигается, объявление функции будет проанализировано до выполнения кода. Порядок выполнения следующим образом: Первая функция PARSE ShapeTruth () {alert ('myvin is is is is aeply')}, а когда функция анализа ShapeTruth () {alert ('myvin - это уродливое')}, переоценивая предыдущее объявление функции. Когда мы называем функцию saytruth (), то есть во время выполнения кода, объявление будет проигнорировано, поэтому Myvin уродлив, естественно, будет выходить (какая жестокая реальность ...). Если вы забудете, вы можете увидеть, что вы сказали выше:
Объявления функций выполняются в течение периода предварительного выполнения, то есть объявления функций выполняются, когда браузер готов к выполнению кода. Поскольку объявление функции выполняется в течение ожидаемого периода выполнения, объявление функции больше не выполняется в течение периода выполнения (есть люди, которые уже выполнили ее, и, естественно, больше не будут выполнять).
Близкий звонок
Давайте поговорим о функциях, объявленных заранее (улучшение) здесь. Я надеюсь, что мое понимание и чушь могут быть полезны для нуждающихся.
Конечно, практика создает истинные знания. Понимание, познание и применение вещей все еще заключаются в чтении, использовании и суммировании большего. Я помню знаменитую поговорку, в которой говорится о заявлениях и практиках: «Давайте перейдем и подбодрим к новым заявлениям».
Приведенный выше краткий анализ объявлений функций и выражений функций - заявление о объявлении функции - это весь контент, который я поделился с вами заранее. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.