Эта статья будет о САМОСЫ Концепция в JavaScript. Не зная о спецификациях правильно, наш код может работать неожиданно. Итак, чтобы очистить вещи и укреплять наши концепции, мы будем обсуждать эти два здесь. Я сделаю все возможное, чтобы объяснить это на новичком языке. 🙌.
Охватывает
Давайте посмотрим на выделенную часть. Он говорит,
Степень области или предмета, на которую что-то имеет дело или на что это актуально.
Так в основном Область В JavaScript должен быть что-то вроде области, где-то сделки. Теперь, кто имеет дело – это первый вопрос, который должен всплыть в нашей голове после прочтения описания, которое я дал. 🤔
ВОЗ?!! Ответ – это переменные в JavaScript.
Так, в простых словах
Область применения – это область в коде, откуда доступна переменная.
Типы спецификаций в JavaScript
В JavaScript есть два вида объема.
- Глобальный объем
- Местный спектр
Локальный объем может быть дополнительно разделен на два типа,
- Местный спектр
- Функциональная область
- Область блока
Вышеуказанное изображение показывает различные типы спецификаций. Прямоугольники показывают область, где доступны переменные. Теперь давайте обсудим на один за другим.
Глобальный объем 🌏.
В глобальном масштабе объема переменные могут быть доступны из любой точки программы. Переменная, объявленная вне всех программ или фигурных скобок, называется глобальной переменной объема. Переменная, объявленная в глобальном объеме, может быть доступна от любой функции или вложенной функции в программе.
Как мы можем видеть из примера, глобально объявлено Номер Сначала называется из глобального охвата, то из функции и после этого он вызывается из блока. Я надеюсь, что это очищает концепцию глобальной массы.
До ES6, var Ключевое слово использовалось для объявления переменной в JavaScript. И var Объявляет все переменные в глобальном объеме, даже если переменная объявляется внутри функции или на уровне блока. Это означает, что любая переменная объявлена с использованием вар Ключевое слово или без ключевого слова доступно из любой точки программы. Но это вызывает проблему, если программа имеет ту же переменную в нескольких местах. Таким образом, обычно это хорошая практика, чтобы не объявить переменную в глобальном масштабе. Это была еще одна причина введения Пусть и const в ES6.
Другая проблема с var Это, если переменная уже определена с вар И если мы заявляем другую переменную с тем же именем, используя вар , это перезаписывает старую переменную и назначить новое значение ему, тогда как Пусть и const даст ошибку. Это может быть огромная головная боль при отладке кода.
var number = 5; var number = 10; console.log(number); //10
let number = 5; const number = 10; //SyntaxError: Identifier 'number' has already been declared
Локальный объем 🏢.
Переменные, которые могут быть доступны только из определенной части кода, являются локальными переменными. Если вы проверяете вышеуказанную диаграмму снова, все переменные, объявленные внутри функции сумма локальные переменной, включая переменную внутри петли. Другими словами, все переменные, отличные от глобальных переменных, являются локальными переменными в JavaScript. Локальные переменные не могут быть вызваны снаружи их функции или блока.
var number = 5;
function sum() {
const arr = [1, 2, 3];
let sum = 0;
}
console.log(arr); //arr is not defined
Поскольку локальная переменная может быть объявлена либо в функции, либо в блоке (например, для петли) или внутри Если-ж / в то время как Петли, JavaScript имеет два типа локальной области, функциональная область , Область блока .
Сфера функции 🏗.
Переменная, объявленная внутри функции, находится в области функции. Переменная может быть доступна из функций или блоков внутри функции (то есть. , вложенные функции) Но не снаружи. В приведенном выше примере кода Arr Переменная объявляется внутри функции, и когда мы пытаемся вызвать его снаружи функции, мы получаем ошибку ARR не определяется Отказ Хотя переменная может быть доступна из вложенной функции.
Область блока 🤠.
Переменные, объявленные внутри блоков, такие как для петли или внутренние фигурные брекеты {} с Пусть или const переменные являются блоками.
if(number % 2 === 0) {
let even = number;
console.log("Even", even);
} else {
let odd = number;
console.log("Odd", odd);
}
console.log("Even", even); //even is not defined
console.log("Odd", odd); //odd is not defined
Я не мог придумать лучший пример, поэтому просто использовал этот код. 😅
Переменные Даже и странные объявлены внутри {} Брекеты, они находятся в блоке. На первой диаграмме переменная Я объявлено внутри для Цикл также является блоком.
function sum() {
const arr = [1, 2, 3];
let sum = 0; //sum and arr are function scope
for(let i = 0; i < arr.length; i++) { //i is block scope
sum = sum + arr[i];
}
}
Я надеюсь, что эта статья как-то помогла вам понять концепцию объема в JavaScript. Если вам понравилась статья, пожалуйста, дайте 👍 и прокомментируйте свои мысли ниже. 🔥
Оригинал: “https://dev.to/nemo011/let-s-talk-scopes-in-javascript-8ol”