создание и продвижение сайта (вбиваю в ТОП-10, как гвозди)Настройка и сопровождение платной рекламы яндекс.директ

JavaScript (основы). Глава 6. Функции

Оглавление | Назад | Вперёд | Индекс

Глава 6. Функции

Функции это фундаментальные конструкции JavaScript. Функция это процедура JavaScript - набор операторов, выполняющих специфическую задачу. Для использования функции Вы обязаны сначала определить её; затем Ваш скрипт может её вызвать.

В главе имеются следующие разделы:

  • Определение функций
  • Вызов функций
  • Использование массива arguments
  • Предопределённые функции

    Определение функций

    Определение функции состоит из ключевого слова function и:

  • имени функции
  • списка аргументов, заключённых в скобки и разделённых запятыми
  • операторов JavaScript, определяющих функцию, заключённых в фигурные скобки { }. Операторы функции могут содержать вызовы других функций, определённых в текущем приложении.

    Вы должны определять все функции в HEAD/шапке страницы, чтобы при её загрузке пользователем функции загружались в 1-ю очередь. Иначе пользователь может выполнить действие, когда страница ещё загружается, и включить обработчик и вызвать функцию, которая ещё не определена, что приведёт к возникновению ошибки.

    Например, следующий код определяет простую функцию square:

    function square(number){

    return number * number}

    Функция square принимает 1 аргумент number. Эта функция состоит из одного оператора, указывающего возвращаемое значение - аргумент функции, умноженный сам на себя. Оператор return специфицирует значение, возвращаемое функцией.

    return number * number

    Все параметры передаются функциям по значению; значение передаётся функции, но если функция изменяет значение параметра, это изменение не отражается глобально или в вызывающей функции. Однако, если Вы передаёте функции объект в качестве параметра и функция изменяет свойства объекта, это изменение видно вне функции, как показано в примере:

    function myFunc(theObject){

    theObject.make="Toyota"

    }

    mycar={make:"Honda", model:"Accord", year:1998}

    x=mycar.make // возвращает Honda

    myFunc(mycar) // передаёт объект mycar функции

    y=mycar.make // возвращает Toyota (prop было изменено функцией)

    Помимо описанного здесь определения функции, Вы можете также определять объекты Function, как показано в разделе "Объект Function".

    Метод это функция, ассоциированная с объектом. Вы может узнать больше об объектах и методах в Главе 7 "Работа с Объектами".

    Вызов функций

    В приложениях для Navigator'а Вы можете использовать (или вызывать) любую функцию, определённую на текущей странице. Вы можете также использовать функции, определённые другими именованными окнами или фрэймами.

    Определение функции не вызывает её выполнения. Определение функции просто именует функцию и специфицирует, что́ выполняется при вызове функции. Вызов функции реально выполняет специфицированные акции с указанными параметрами. Например, если Вы определили функцию square, Вы можете вызвать её так:

    square(5)

    Это оператор вызова функции с аргументом 5. Функция выполняет свои операторы и возвращает значение 25.

    Аргументы функции не ограничиваются только числами и строками. Вы можете также передавать в функцию объекты. Функция show_props (определённая в разделе "Объекты и Свойства") это пример функции, принимающей в качестве аргумента объект.

    Функция может быть рекурсивной, то есть вызывать сама себя. Например, вот функция вычисления факториалов:

    function factorial(n){

    if((n == 0) || (n == 1))

    return 1

    else {

    result=(n * factorial(n-1))

    return result

    }}

    Вы можете вычислить факториалы значений от 1 до 5:

    a=factorial(1) // возвращает 1

    b=factorial(2) // возвращает 2

    c=factorial(3) // возвращает 6

    d=factorial(4) // возвращает 24

    e=factorial(5) // возвращает 120

    Использование массива arguments

    Аргументы обрабатываются в массиве. В функции вы можете адресовать параметры, передаваемые ей:

    arguments[ i ]

    functionName.arguments[i]

    где i это порядковый номер аргумента, начиная с 0. Таким образом, первый аргумент, передаваемый функции, это arguments[0]. Общее число аргументов указывается свойством arguments.length.

    Используя массив arguments, Вы можете вызвать функцию с большим количеством аргументов, чем объявлено в формальном определении. Это часто используется, если заранее не известно точное количество аргументов, передаваемых функции. Вы можете использовать arguments.length для определения количества аргументов, реально передаваемых функции, а затем работать с каждым аргументом с использованием массива arguments.

    Например, рассмотрим функцию, которая объединяет несколько строк. Единственным формальным аргументом для этой функции является строка, которая специфицирует символы, разделяющие объединяемые элементы. Функция определена так:

    function myConcat(separator){

    result="" // инициализирует список

    // итерирует по аргументам

    for (var i=1; i<arguments.length; i++){

    result += arguments[i] + separator

    }

    return result

    }

    Вы можете передать этой функции любое количество аргументов, и она создаст список, используя каждый аргумент как элемент списка.

    // возвращает "red, orange, blue, "

    myConcat(", ","red","orange","blue")

    // возвращает "elephant; giraffe; lion; cheetah;"

    myConcat("; ","elephant","giraffe","lion", "cheetah")

    // возвращает "sage. basil. oregano. pepper. parsley. "

    myConcat(". ","sage","basil","oregano", "pepper", "parsley")

    См. статью об объекте Function в книге Клиентский JavaScript. Справочник.

    Предопределённые функции

    В JavaScript есть несколько предопределённых функций:

  • eval
  • isFinite
  • isNaN
  • parseInt и parseFloat
  • Number и String
  • escape и unescape

    В следующих разделах рассматриваются эти функции. См. также книгу Клиентский JavaScript. Справочник.

    Функция eval

    Функция eval вычисляет строку кода JavaScript без ссылки на определённый объект. Синтаксис eval таков:

    eval( expr)

    где expr это вычисляемая строка.

    Если строка представляет выражение, eval вычисляет это выражение. Если аргумент представляет собой 1 или несколько операторов JavaScript, eval выполняет эти операторы. Не вызывайте eval для вычисления арифметических выражений; JavaScript вычисляет арифметические выражения автоматически.

    Функция isFinite

    Функция isFinite вычисляет аргумент, чтобы определить, является ли он конечным числом. Синтаксис isFinite:

    isFinite( number)

    где number это вычисляемое число.

    Если аргумент имеет значения NaN, положительная или отрицательная бесконечность, то этот метод возвращает false, иначе возвращает true.

    Следующий код проверяет клиентский ввод и определяет, является ли он конечным числом.

    if(isFinite(ClientInput) == true)

    {

    /* некоторые специальные шаги */

    }

    Функция isNaN

    Функция isNaN вычисляет аргумент, чтобы определить, является ли он "NaN" (не-числом). Синтаксис isNaN:

    isNaN( testValue)

    где testValue это значение, которое Вы хотите обсчитать.

    Функции parseFloat и parseInt возвращают "NaN", если они вычисляют значение, которое не является числом. isNaN возвращает true, если передано "NaN", и false - в ином случае.

    Следующий код вычисляет floatValue и определяет, является ли оно числом, а затем вызывает соответствующую процедуру:

    floatValue=parseFloat(toFloat)

    if(isNaN(floatValue)){

    notFloat()

    } else {

    isFloat()

    }

    Функции parseInt и parseFloat

    Две "parse"-функции, parseInt и parseFloat, возвращают числовое значение при получении строкового аргумента.

    Синтаксис parseFloat таков:

    parseFloat( str)

    где parseFloat разбирает свой аргумент, строку str, и пытается возвратить число с плавающей точкой. Если она обнаруживает символ, отличный от знака (+ или -), числа (0-9), десятичной точки или экспоненты, она возвращает значение, разобранное до этого места, и игнорирует этот символ и все последующие символы. Если первый символ не может быть конвертирован в число, функция возвращает значение "NaN" (не-число).

    Синтаксис parseInt таков:

    parseInt(str [, radix])

    parseInt разбирает первый аргумент, строку str, и пытается возвратить целое число со специфицированной radix (базой), обозначаемой вторым не обязательным аргументом radix. Например, radix 10 указывает на конвертацию десятеричного числа, 8 -восьмеричного, 16 - шестнадцатеричного, и так далее. При radix более 10 буквы латинского алфавита используются для обозначения цифр больше 9. Например, для 16-ричных чисел (база 16), используются английские буквы от A до F.

    Если parseInt обнаруживает символ, не являющийся цифрой в специфицированном radix, она игнорирует этот и все последующие символы и возвращает целочисленное значение, разобранное до этого места. Если первый символ не может быть конвертирован в число со специфицированной базой, функция возвращает "NaN." Функция parseInt усекает строку до целочисленных значений.

    Функции Number и String

    Функции Number и String позволяют конвертировать объект в число или строку. Синтаксис таков:

    Number( objRef)

    String( objRef)

    где objRef это ссылка на объект.

    В следующем примере Date -объект конвертируется в читабельную строку.

    D=new Date (430054663215)

    // возвращает

    // "Thu Aug 18 04:37:43 GMT-0700 (Pacific Daylight Time) 1983"

    x=String(D)

    Функции escape и unescape

    Функции escape и unescape позволяют кодировать и декодировать строки. Функция escape возвращает 16-ричное кодовое значение своего аргумента - символа их набора ISO Latin. Функция unescape возвращает ASCII-строку для специфицированного 16-ричного кодового значения.

    Синтаксис этих функций таков:

    escape(string)

    unescape(string)

    Эти функции используются в основном в серверном JavaScript для кодирования и декодирования пар имя/значение в URL.

    Оглавление | Назад | Вперёд | Индекс

  • Отвечу на любые вопросы. С уважением, Дмитрий Владимирович.

    Ваше письмо×
    Free Web Hosting