Size: a a a

JavaScript Noobs — сообщество новичков

2021 January 15

N

November in JavaScript Noobs — сообщество новичков
Denys Mikhalenko
всплывает, но без значения
типо она объявлена, но еще не определена?
источник

D

Drus in JavaScript Noobs — сообщество новичков
November
типо она объявлена, но еще не определена?
Да, только объявление всплывает
источник

D

Drus in JavaScript Noobs — сообщество новичков
Но почему-то оно не просто undefined кидает, а ошибку в var функции
источник

1

1N54N3 in JavaScript Noobs — сообщество новичков
Drus
Но почему-то оно не просто undefined кидает, а ошибку в var функции
потому что ты пытаешься вызвать функцию которой не существует
источник

N

November in JavaScript Noobs — сообщество новичков
Drus
Да, только объявление всплывает
а если function a() то всплывет не только объявление, но и все определение?
источник

DM

Denys Mikhalenko in JavaScript Noobs — сообщество новичков
Да
источник

D

Drus in JavaScript Noobs — сообщество новичков
1N54N3
потому что ты пытаешься вызвать функцию которой не существует
но ведь и примитива якобы перед его объявлением var не существует, но кидается undefined
источник

N

November in JavaScript Noobs — сообщество новичков
отлично, все спасибо
источник

DM

Denys Mikhalenko in JavaScript Noobs — сообщество новичков
function foo() {
 console.log(a)
 var a = 42
}

на самом деле работает как
function foo() {
 var a
 console.log(a)
 a = 42
}
источник

D

Drus in JavaScript Noobs — сообщество новичков
Denys Mikhalenko
function foo() {
 console.log(a)
 var a = 42
}

на самом деле работает как
function foo() {
 var a
 console.log(a)
 a = 42
}
А смысл вообще какой-то есть от всплытия var? Он же даже без значения это делает
источник

N

November in JavaScript Noobs — сообщество новичков
Чисто прояснить:
a()// все норм, так как всплывет и объявление и определение
function a(){
  console.log('a')
}

b() // всплывет только var b(){}, то есть определение
var b = ()=>{
   console.log('b')
}

c() // ничего не всплывет
const c = ()=>{
   console.log('c')
}
источник

DM

Denys Mikhalenko in JavaScript Noobs — сообщество новичков
с let / const все работает похожим образом, но....
до момента присвоения переменной значения к ней обращаться нельзя, она в TDZ находится и будет ошибка
источник

N

November in JavaScript Noobs — сообщество новичков
Правильно?
источник

DM

Denys Mikhalenko in JavaScript Noobs — сообщество новичков
November
Чисто прояснить:
a()// все норм, так как всплывет и объявление и определение
function a(){
  console.log('a')
}

b() // всплывет только var b(){}, то есть определение
var b = ()=>{
   console.log('b')
}

c() // ничего не всплывет
const c = ()=>{
   console.log('c')
}
всплывет только var b и значение у b будет undefined
источник

DM

Denys Mikhalenko in JavaScript Noobs — сообщество новичков
про c как я уже написал, на самом деле тоже всплывет, но проблема будет не в том, что в c будет undefined, а то, что c будет в TDZ (temporal dead zone), поэтому обращение к ней вызовет ошибку выполнения
источник

D

Drus in JavaScript Noobs — сообщество новичков
Denys Mikhalenko
с let / const все работает похожим образом, но....
до момента присвоения переменной значения к ней обращаться нельзя, она в TDZ находится и будет ошибка
Это я знаю. Просто не вижу практического смысла в том что var поднимается.
источник

DM

Denys Mikhalenko in JavaScript Noobs — сообщество новичков
Это не ко мне, простите
источник

N

November in JavaScript Noobs — сообщество новичков
Denys Mikhalenko
всплывет только var b и значение у b будет undefined
а function a(){} полностью же всплывет?
источник

DM

Denys Mikhalenko in JavaScript Noobs — сообщество новичков
Я не состою в Ecma International
источник

DM

Denys Mikhalenko in JavaScript Noobs — сообщество новичков
November
а function a(){} полностью же всплывет?
да
источник