|
@@ -60,7 +60,8 @@ var fathername = prompt("Введите отчество","") || "Иванови
|
|
|
|
|
|
Свойства **функции**, которые сделали её такой полезной для написания программ:
|
|
Свойства **функции**, которые сделали её такой полезной для написания программ:
|
|
|
|
|
|
-- **Вызов**. Функция может быть вызвана, код функции выполнится в другом месте, после выполнения функции выполнение кода продолжается с места вызова.
|
|
|
|
|
|
+- **Вызов**. Функция может быть вызвана любое количество раз, код функции выполнится в другом месте, после выполнения функции выполнение кода
|
|
|
|
+ продолжится с места вызова:
|
|
|
|
|
|
```javascript
|
|
```javascript
|
|
function d()
|
|
function d()
|
|
@@ -95,7 +96,7 @@ alert(surname);
|
|
```
|
|
```
|
|
|
|
|
|
Для решения этой проблемы используется концепция *области видимости* - **правильно** объявленная переменная
|
|
Для решения этой проблемы используется концепция *области видимости* - **правильно** объявленная переменная
|
|
- в функции (через `var`) существует только в функции и создаются каждый раз при вызове функции; внешние же переменные с таким же именем остаются
|
|
|
|
|
|
+ в функции (через `var`) существует только в функции и создается каждый раз при вызове функции; внешние же переменные с таким же именем остаются
|
|
нетронутыми
|
|
нетронутыми
|
|
|
|
|
|
```javascript
|
|
```javascript
|
|
@@ -130,7 +131,7 @@ readWithDefault("Введите фамилию","","Иванов");
|
|
```
|
|
```
|
|
|
|
|
|
- **Возвращаемое значение**. Обратите внимание на то, что **функции** можно использовать как переменные в выражениях, однако не всегда это имеет смысл.
|
|
- **Возвращаемое значение**. Обратите внимание на то, что **функции** можно использовать как переменные в выражениях, однако не всегда это имеет смысл.
|
|
- Более того, функции нельзя присвоить значение, однако можно *прочесть* её значение.
|
|
|
|
|
|
+ Более того, **результату** функции нельзя присвоить значение, однако можно *прочесть* результат, вызвав функцию.
|
|
|
|
|
|
```javascript
|
|
```javascript
|
|
var surname = "Петров";
|
|
var surname = "Петров";
|
|
@@ -150,7 +151,7 @@ alert(name);
|
|
## Определение и выполнение функций
|
|
## Определение и выполнение функций
|
|
|
|
|
|
Обратите внимание, что первый `alert` происходит ДО включения пошаговой отладки. Это говорит о том, что *определение функции* **НЕ** вызывает её.
|
|
Обратите внимание, что первый `alert` происходит ДО включения пошаговой отладки. Это говорит о том, что *определение функции* **НЕ** вызывает её.
|
|
-Код функции работает только после вызова, который происходит по d(). Для вызова надо указать в коде имя функции и скобки после имения (с параметрами
|
|
|
|
|
|
+Код функции работает только после вызова, который происходит по `d()`. Для вызова надо указать в коде имя функции и скобки после имения (с параметрами
|
|
или без оных)
|
|
или без оных)
|
|
```javascript
|
|
```javascript
|
|
function d()
|
|
function d()
|
|
@@ -213,8 +214,8 @@ alert(add(1));
|
|
alert(add(2,3));
|
|
alert(add(2,3));
|
|
```
|
|
```
|
|
|
|
|
|
-Если же параметров больше, чем указано в определении функции, то ошибки тоже не происходит. Для доступа к остальным полям существует **псевдомассив**
|
|
|
|
-`arguments`.
|
|
|
|
|
|
+Если же параметров больше, чем указано в определении функции, то ошибки тоже не происходит. Для доступа к полям существует **псевдомассив**
|
|
|
|
+`arguments`, который всегда содержит актуальный набор параметров, переданных при вызове.
|
|
```javascript
|
|
```javascript
|
|
debugger;
|
|
debugger;
|
|
function add(a,b)
|
|
function add(a,b)
|
|
@@ -300,7 +301,7 @@ var lowerCase = myLowerCase("AbCdEf") //не работает.
|
|
var upperCase = rightUpperCase("AbCdEf") //работает
|
|
var upperCase = rightUpperCase("AbCdEf") //работает
|
|
```
|
|
```
|
|
|
|
|
|
-Что бы отличить результат выражения от вывода console.log, отметьте что возле значения выражения есть знак <.
|
|
|
|
|
|
+Что бы отличить результат выражения от вывода console.log, отметьте что возле значения выражения есть знак `<`.
|
|
|
|
|
|
## Область видимости
|
|
## Область видимости
|
|
|
|
|