Если функции являются объектами в javascript, почему я не могу получить доступ к области видимости определенной области?Почему я не могу получить доступ к переменным внутри функции?
Я понимаю, что в коде:
// variable test assigned an anonymous function
var test = function(){
var x = 5;
};
console.log(test.x); // undefined
// Even when the function is explicitly named:
function test(){
var x = 5;
}
console.log(test.x); // undefined
мне не нужно, чтобы получить эту работу или что-нибудь; Мне просто нужно понять, почему функции такие.
Спасибо.
В созданные вами переменные видны в области видимости функции. И да, они являются объектами, поэтому вы можете сделать «var test = function() {}; test.x = 5; ' – andrusieczko
Локальные переменные не магически становятся свойствами объекта функции. И ни в коем случае переменная 'x' даже не существует в вашем приложении, потому что' test' никогда не выполняется. –
Вероятно, вы имели в виду 'var test = function() {this.x = 5; console.log (х);}; test.x = 3; контрольная работа(); console.log (test.x); '; поэтому здесь, когда вы пишете 'this.x = 5', а затем вы вызываете функцию типа' test() ', она вызывается с областью« окна ». Так эффективно, 'this.x = 5' в теле функции эквивалентно' window.x = 5'. Теперь console.log (x) в этом случае пытается найти локальную переменную 'x', а затем глобальную переменную' x'. Итак, 'console.log (x)' здесь совпадает с 'console.log (window.x)'. Итак, вы получили 'test.x === 3' и' window.x === 5'. – andrusieczko