2013-04-05 6 views
4

Я хочу получить глобальную переменную 'x', когда она переопределена одной и той же переменной внутри функции.Доступ к переопределенной глобальной переменной внутри функции

function outer() { 
    var x = 10; 
    function overRideX() { 
     var x = "Updated"; 
     console.log(x); 
    }; 

    overRideX(); 
} 

outer(); 

Jsbin: Fiddle to Test

Я не хочу, чтобы переименовать переменную внутренней 'х' к чему-то еще. Возможно ли это?

Редактировать: Отредактированный вопрос после abeisgreat ответа.

ответ

2

Вы можете использовать window.x для ссылки на глобальную область.

var x = 10; 
function overRideX() { 
    var x = "Updated"; 
    console.log(x); 
    console.log(window.x); 
}; 

overRideX(); 

Этот код журналы «Обновление» 10. Затем

+0

Да, но это не будет работать каждый раз. Представьте себе случай, когда весь код выше внутри другой функции. Тогда window.x не будет работать. И я столкнусь с той же проблемой. – sachinjain024

+0

Тогда это будет зависеть от конкретного случая, однако я бы предложил получить привычку более четко указывать ваши переменные. Наличие нескольких переменных, названных одинаковыми (особенно одиночные символы), становится очень запутанным. –

+1

Спасибо abeisgreat. Но этот вопрос просто из любопытства. – sachinjain024

1

Глобальный масштаб вашей веб-страницы window. Таким образом, каждая переменная, определенная в глобальном масштабе, может быть доступна через объект window.

var x = 10; 
function overRideX() { 
    var x = "Updated"; 
    console.log(x + ' ' + window.x); 
}(); 
Смежные вопросы