2012-06-05 3 views
1

Хотя затенение никогда не должно использоваться (или просто для запутывания), потому что оно запутывает, я хотел полностью его понять. И я получил эту странную вещь:Странное поведение при затенении

alert(parseInt('123'));//Here, I expected 123 but it's 'overshadowed' 
function parseInt(){return 'overshadowed';} 
alert(parseInt('123'));//Here it's 'overshadowed' too 

Почему первая alert выхода «в тени», тогда как функция еще не модифицированная?

PS: Я был вдохновлен Variable shadowing in JavaScript

ответ

2

В JavaScript, все заявления являются неявно помещенной в начале сферы («взвалил»), так что это, если ParseInt не имеет значения() определение было на второй, последней или первой строке.

+2

Обычно это называется «подъем». http://www.adequatelygood.com/2010/2/JavaScript-Scoping-and-Hoisting – ajm

+0

@ajm: да, спасибо за отзыв, добавив это в ответ. –

Смежные вопросы