Эта штука работает вместе с старым объявлением переменной.
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 ) И не вспоминайте как можно работать без него