Size: a a a

2019 October 20

GA

Gautama Austria in JS
Но объясните про let и var

вот  - VAR создается в глобальном объекте window .
        - может быть объявлен без ключевого слова
       -  область видимости - как у функции - { } блок, ,,, и область ( ) его - внешний scope

        - LET / CONST
        -  область видимости только БЛОК { }
        - Нельзя перезаписывать или объявлять повторно при помощи ключевого слова
        - Не записывается в объект window // const a = 10; a !== window.a; window.a === undefined
        (а куда он тогда вообще записывается, вообще не понятно)

вообще объясните это чтоб стало понятно - на уровне 'clear'
       потомучто все чето знают, а как кого не спроси по делу путаются и говорят разное
источник

K

KoTuK in JS
Я вот не знаю, чет лет конст вар, я использую конст для значений которые не изменятся или объектов, а лет для того что измениться, а про это все я вообще хз, но я и не тот на кого равняться стоит так что да
источник

K

KoTuK in JS
Это походу для чего-то серьезного нужно знать
источник

ВР

Ваня Реутенко... in JS
кароч, при инициализации на уровне языка создается обьект LexicalEnvironment( в спеке ECMA написано что должно создаватся два обьекта LexicalEnvironment и VariableEnvironment, но по сути в реализации js их обьеденили). при обьявлении переменной через var она попадает в "старое" лексическое окружение которое подвязано к window, а переменные через let и const  в "новое".
источник

ВР

Ваня Реутенко... in JS
я пытался подробнее узнать как все работает, но в моем окружении только это и знали
источник

ВР

Ваня Реутенко... in JS
плюс к лексическому окружению лет и конст добавлены плюшки типа temporal Dead zone, и запрет на переобьявление
источник

GA

Gautama Austria in JS
Вот, этот чувак, который больше всех пользы 'нанес'
источник

GA

Gautama Austria in JS
Переслано от MaxGraey
javascript
src  = { name: 'z' }
src1 = { name: 'a' }
src2 = { name: 'b'}
noSrc = { name: 'x' } // для примера

const arr = Object
 .keys(window)
 .filter(k => k.startsWith('src'))
 .reduce((arr, k) => (arr.push(window[k]), arr), [])

console.log(arr)
источник

GA

Gautama Austria in JS
Переслано от MaxGraey
у var предел скоупа - это фунция и не важно в каком месте такая переменная была определена
у let и const скоуп - это блок, а не функция, то есть границы намного уже. Лексическое окружение у всех одинаковое
источник

GA

Gautama Austria in JS
Переслано от MaxGraey
Советую почитать вот это
https://2ality.com/2019/07/global-scope.html
источник

ПВ

Павел Веденичев... in JS
Так я и не понял
источник

ПВ

Павел Веденичев... in JS
Куда let c const записываются если не в глобальную переменную?
источник

ПВ

Павел Веденичев... in JS
В отдельную функцию? Или как?
источник

ПВ

Павел Веденичев... in JS
(Если их объявить на глобальном уровне, разумеется)
источник

VL

Vladimir Luvolunov in JS
Павел Веденичев
Куда let c const записываются если не в глобальную переменную?
Для них создаётся новое лексическое окружение и скоуп меняется с фигурными скобками
источник

VL

Vladimir Luvolunov in JS
Павел Веденичев
(Если их объявить на глобальном уровне, разумеется)
Просто существует объект, который инициализируется на второй стадии обработки кода, исполнении. Код обрабатывается построчно и встречая переменные через let, они записываются туда, но доступа туда нет, как к глобальному объекту
источник

ПВ

Павел Веденичев... in JS
Vladimir Luvolunov
Просто существует объект, который инициализируется на второй стадии обработки кода, исполнении. Код обрабатывается построчно и встречая переменные через let, они записываются туда, но доступа туда нет, как к глобальному объекту
Понял
источник

ПВ

Павел Веденичев... in JS
Vladimir Luvolunov
Просто существует объект, который инициализируется на второй стадии обработки кода, исполнении. Код обрабатывается построчно и встречая переменные через let, они записываются туда, но доступа туда нет, как к глобальному объекту
А получается именно поэтому let нельзя 2 раза объявлять? Тип var записывается в глобальную область и туда есть доступ => есть возможность перезаписи переменной, а у let нет?
источник

ПВ

Павел Веденичев... in JS
Наверно пойду повторю область видимости
источник

VL

Vladimir Luvolunov in JS
Возможно, я спеку не чекал да и вообще браузерное устройство, так что ничего сказать не могу
источник