Шрифт
JavaScript урок 4. Javascript функции и объекты
Play

JavaScript урок 4. Javascript функции и объекты

В javascript достаточно много функций, встроенных в синтаксис языка. Рассмотрим одну из них.

eval(строка)

Рассмотрим пример использования функции eval:

let y = 5; // значение у равно 5 let x = "if (y==5) y*2-3"; // значение х равно строке символов let rezult = eval(x); // rezult равно 7

Пользовательские Javascript функции

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

  1. Функция в роли процедуры. Если функция выполняет какие-либо действия и не возвращает значение:

Синтаксис объявления (создания) функции:

Другой вариант создания функции — Function Expression (Функциональное Выражение):

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

В javascript вызов функции в роли процедуры происходит следующим образом:

имя_функции (аргументы); // с аргументами имя_функции (); // без аргументов

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

В javaScript вызов функции, возвращающей значение, происходит, например, следующим образом:

let a = имя_функции (аргументы); alert(a); // 1-й способ let b = a + a; // 2-й способ

То есть значение нужно либо вывести на экран, либо можно использовать в дальнейших выражениях.

  • Рассмотрите работу функции:

let a=sayHello(); alert(a);

Примерный фрагмент кода для одного из способов:

  1. Для чего используются функции?
  2. Объясните в чем разница использования функции в роли процедуры и функции с классическим оформлением?
  3. Опишите синтаксис вызова функции в роли процедуры.
  4. Опишите синтаксис вызова функции с классическим оформлением.
  5. Для чего служит директива return ?

Javascript функции с параметрами (аргументами) и возврат значений

Рассмотрим подробнее использование инструкции return в функции javascript на двух примерах. Кроме того, рассмотрим использование в Javascript функции с параметрами (аргументами).

  • Объявите функцию sayHello. В скобках аргументов функции укажите аргумент с именем userName:
    Объявите функцию sayHello. В скобках аргументов функции укажите аргумент с именем userName:

. let a = sayHello("Вася"); alert(a);

У функций могут быть необязательные аргументы:

function f(x, y = 3) < return x + y; >f(2); // 5

Все способы создания пользовательских функций
  1. классический синтаксис

//обязательным является только последний аргумент – тело функции let a1 = new Function('x', 'y', 'return x + y');

let a1 = new Function('return "hello"');

Вызов функций во всех случаях будет:

let a = a1(3, 4); alert(a); // вывод значения на экран

Использование выражений с функциями

Обычное использование javascript функции:

Функция как составная часть выражения:

function findMax(a,b,c) < . return . >let max = . .

(только для функций, которые возвращают результат):

Рассмотрим примеры для функции:

function plRectangle(width, height)

Варианты выражений:

⇒ Вызов функции как часть выражения:

S3 = 0.5 * plRectangle(a, b);

⇒ Вызов функции в логических выражениях:

if (plRectangle(a, b) > plRectangle(c, d)) alert("Первый прямоугольник больше второго");

⇒ Вызов javascript функции в качестве параметра другой функции:

let х = "25рх"; let у = 12; let S = plRectangle(parselnt(x), у);

  1. Что такое аргументы функции и где они указываются?
  2. Может ли на месте аргумента функции находиться вызов другой функции?

Область видимости переменных. Javascript глобальные и локальные переменные в функции

Область видимости переменной — область кода, в котором переменная доступна для использования.

    Глобальные переменные — создаются на уровне сценария и сохраняются до конца сценария; — объявляются до описания javascript функции:

let a = 1; function . .

function func() < >func();

Область видимости переменных

Рассмотрим конкретные примеры области видимости переменных в javascript при использовании глобальных и локальных переменных.

let S = 2; // Глобальная переменная S function plRectangle(width, height) < let S = width * height; return S // Локальная переменная S >z = plRectangle(2, 3); alert(z); alert(S);

function plRectangle(width, height) < let s = width * height; // аргументы всегда локальны width = width + 10; return s >width = 2; height = 3; z = plRectangle(width, height); alert(z); alert(width);

function Plrectangle(width, height) < S = width * height; //глобальная переменная return S >z = Plrectangle(2, 3); S=2; // изменяем глобальную переменную alert(z); alert (S);

function plRectangle(width, height) < let S = width * height; let x = 17; return S >z = plRectangle(2,3); alert(z); alert(x); // не определена во внешней программе alert (S); // не определена во внешней программе

  1. Какова разница между локальными и глобальными переменными?
  2. Зачем в программировании существует необходимость деления переменных на локальные и глобальные?

Рекурсивная функция javascript

Бывают также косвенная или сложная рекурсия, когда функция вызывается не непосредственно из самой себя, а из вложенной в нее функции: например, функция A вызывает функцию B , а функция B — функцию A . Количество вложенных вызовов функции или процедуры называется глубиной рекурсии.

  • начальное условие (известное значение для переменной, отправной момент рекурсии);
  • рекурсивное правило;
  • условие окончания рекурсии.

Рекурсия javascript рассмотрена ниже на примере возведения числа в степень. Для начала рассмотрим итерационный вариант возведения в степень, т.е. с использованием цикла:

let chislo,stepen; function degree(chislo,stepen) < for(let result = 1; stepen > 0; stepen--) < result *= chislo; >return result; > document.write(degree(2,4)); // выводит 16

  • Объявите глобальные переменные для числа и степени и запросите их:

let chislo,stepen; chislo = parseInt(prompt('число: ')); stepen = parseInt(prompt('степень: '));

function degree(chislo,stepen) < if(stepen) < … >return 1; // если степень равна нулю то возвращаем 1 >

document.write(chislo,' в степени ', stepen, ' = ', degree(chislo,stepen));

  1. Что такое рекурсия?
  2. Назовите основные условия организации рекурсии, как вы их понимаете?

Стрелочные функции или лямбда выражения в javascript

В javascript возможно использование так называемых лямбда выражений: функции, которые сокращают запись выражения. В записи такой функции используется стрелочка => , отсюда и название «стрелочные функции». Стрелочку можно трактовать, как «такое, что»:

Пример стрелочной функции с одним аргументом:

let f = x => x + 1; alert(f(5))

Расшифровываем так: функция f равна значению x, такое, что x = x + 1. То есть в результате в окно выведется 6.

Пример стрелочной функции с двумя аргументами:

let g = (x, y) => x + y; alert(g(5,3))

  • Назовем функцию factorial.
  • Определим рекурсивные правила:
  • Теперь данные правила опишем в самой рекурсивной функции в скрипте. Для написания функции будем использовать тернарный оператор:

let factorial = n => (n > 0) ? n * factorial(n-1) : 1;

  • Назовем функцию fib.
  • Определим рекурсивные правила:
  • Теперь данные правила опишем в самой рекурсивной функции в скрипте. Для написания функции будем использовать тернарный оператор:

let fib = n => (n > 2) ? fib(n-1) + fib(n-2) : 1;

  1. Какие функции называются стрелочными функциями?
  2. Есть ли разница между стрелочными функциями и лямбда выражениями в javascript?
  3. Каков синтаксис стрелочных функций?
Рубрики:

В вашем задание ответ неправильный. Ответ будет 6 и 6. Попробуйте сами запустить этот код function Plrectangle(width, height) S=2; z = Plrectangle(2, 3); alert(z); alert (S); Пример: Значение z равно 6, а значение S осталось равным 2, то есть значению глобальной переменной, определенной во внешней программе

admin

Да нет, всё верно

Dmitriy

Всё же не верно. S — глобальная переменная, и в теле функции S изменяется. Результат 6 и 6. Чтобы было верно, надо в в функции поставить var S=…

Coder

Я тоже проверил через консоль, значения будут совпадать

admin

Да, вы правы. Имелось в виду: function Plrectangle(width, height) z = Plrectangle(2, 3); S=2; alert(z); alert (S);

В таком случае всё верно. Спасибо!

Добавить комментарий Отменить ответ Уроки и лабы группа вк

2022 Ростов-на-Дону, Майер Светлана (ЮФУ), лабы по информатике, егэ Все права защищены. Использование любых материалов сайта возможно только с разрешения правообладателя.

📎📎📎📎📎📎📎📎📎📎