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 функции
Пользовательские функции прежде всего необходимы в ситуации, когда в разных частях программы необходимо выполнять одни и те же действия несколько раз. В таком случае повторяемые операторы оформляются в виде функции, к которой можно обращаться и вызывать ее выполнение из разных частей программы.
- Функция в роли процедуры. Если функция выполняет какие-либо действия и не возвращает значение:
Синтаксис объявления (создания) функции:
Другой вариант создания функции — Function Expression (Функциональное Выражение):
Вызов функции:
В javascript вызов функции в роли процедуры происходит следующим образом:
имя_функции (аргументы); // с аргументами имя_функции (); // без аргументов
Вызов функции:
В javaScript вызов функции, возвращающей значение, происходит, например, следующим образом:
let a = имя_функции (аргументы); alert(a); // 1-й способ let b = a + a; // 2-й способ
То есть значение нужно либо вывести на экран, либо можно использовать в дальнейших выражениях.
- Рассмотрите работу функции:
let a=sayHello(); alert(a);
Примерный фрагмент кода для одного из способов:
- Для чего используются функции?
- Объясните в чем разница использования функции в роли процедуры и функции с классическим оформлением?
- Опишите синтаксис вызова функции в роли процедуры.
- Опишите синтаксис вызова функции с классическим оформлением.
- Для чего служит директива 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
Все способы создания пользовательских функций- классический синтаксис
//обязательным является только последний аргумент – тело функции 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), у);
- Что такое аргументы функции и где они указываются?
- Может ли на месте аргумента функции находиться вызов другой функции?
Область видимости переменных. 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); // не определена во внешней программе
- Какова разница между локальными и глобальными переменными?
- Зачем в программировании существует необходимость деления переменных на локальные и глобальные?
Рекурсивная функция 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));
- Что такое рекурсия?
- Назовите основные условия организации рекурсии, как вы их понимаете?
Стрелочные функции или лямбда выражения в 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;
- Какие функции называются стрелочными функциями?
- Есть ли разница между стрелочными функциями и лямбда выражениями в javascript?
- Каков синтаксис стрелочных функций?
В вашем задание ответ неправильный. Ответ будет 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 Ростов-на-Дону, Майер Светлана (ЮФУ), лабы по информатике, егэ Все права защищены. Использование любых материалов сайта возможно только с разрешения правообладателя.