Function Scope vs Block Scope?

Начал учить JS после Java,
Не очень понимаю разницу между двумя Scope, например,
Function Scoped превращается в Block Scope для функций при использовании stict mode, какая разница на практике?
Я читал статьи и не мог понять, что для меня как для разработчика от этого меняется?

Block Scope для лупов, ифов, Function scope для функций ( до ES6 ), по факту разницы не понял.

Был бы очень благодарен за ответ!
  • Вопрос задан
  • 378 просмотров
Решения вопроса 1
@alekcena
Нелинейный наставник
Эта штука работает вместе с старым объявлением переменной.
function test(){
// Работаем в области функции нет разницы
var a = 10; // console.log(a)  - 10
let b = 10; // console.log(b)  - 10
// var в блоке можно получить из вне.
for(var c = 0;c < 2; c++){}
console.log(c) // console.log(c) - 2
for(let d = 0;d<1;d++){}
console.log(d) // console.log(d) - ошибка нет такой переменной
}

use strict - директива включающая новые правила для написания правильного кода. Чтобы человек меньше себе стрелял в ногу тем что переменная из цикла могла существовать на глобальном уровне.
Там если ошибка то сразу по ручкам.
Пример:

//Обычный js:
function test(){
magic = 10;}
test();
console.log(magic) // 10
//С use strict:
function test(){
magic = 10;}
test();
console.log(magic) // magic is not defined


P.S:
Если можете то просто посмотрите как писать с use strict ) И не вспоминайте как можно работать без него
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы