62 lines
2.1 KiB
Markdown
62 lines
2.1 KiB
Markdown
|
---
|
|||
|
title: Global Scope and Functions
|
|||
|
localeTitle: Глобальная область и функции
|
|||
|
---
|
|||
|
## Глобальная область и функции
|
|||
|
|
|||
|
Объем переменной - ее видимость; где в коде функция доступна? Вот список различных областей, которые может иметь переменная.
|
|||
|
|
|||
|
* **Глобальная область** : переменная доступна во всем коде
|
|||
|
* **Локальная область** : доступна только в определенной области (например, только внутри функции)
|
|||
|
* **Область блока** : доступна в _еще более_ определенной области (например, if-statement)
|
|||
|
|
|||
|
Ваша задача - понять, как добавление `var` (а не добавление) перед именем переменной может изменить область переменной.
|
|||
|
|
|||
|
Когда вы добавляете `var` перед именем переменной, его область определяется по месту ее размещения. Вот так:
|
|||
|
|
|||
|
```javascript
|
|||
|
var num1 = 18; // Global scope
|
|||
|
function fun() {
|
|||
|
var num2 = 20; // Local (Function) Scope
|
|||
|
if (true) {
|
|||
|
var num3 = 22; // Block Scope (within an if-statement)
|
|||
|
}
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
Когда вы этого не сделаете, это результат:
|
|||
|
|
|||
|
```javascript
|
|||
|
num1 = 18; // Global scope
|
|||
|
function fun() {
|
|||
|
num2 = 20; // Global Scope
|
|||
|
if (true) {
|
|||
|
num3 = 22; // Global Scope
|
|||
|
}
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
Хорошо, вот основное решение для кода.
|
|||
|
|
|||
|
```javascript
|
|||
|
// Declare your variable here
|
|||
|
var myGlobal = 10;
|
|||
|
|
|||
|
function fun1() {
|
|||
|
oopsGlobal = 5;
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
// Only change code above this line
|
|||
|
function fun2() {
|
|||
|
var output = "";
|
|||
|
if (typeof myGlobal != "undefined") {
|
|||
|
output += "myGlobal: " + myGlobal;
|
|||
|
}
|
|||
|
if (typeof oopsGlobal != "undefined") {
|
|||
|
output += " oopsGlobal: " + oopsGlobal;
|
|||
|
}
|
|||
|
console.log(output);
|
|||
|
}
|
|||
|
|
|||
|
```
|