Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
var func = function() { console.log('1'); };
function func() { console.log('2'); }
func();
let и его влияние на области видимости.let.var Module= {
mothod1 : function() {
},
mothod2 : function() {
},
mothod3 : function() {
}
}var name = 'Todo'; // Локальная ОВ
globalName = 'Todo'; // Глобальная ОВ (покуда без var)
console.log(this); // > Window mySuperVar = 'text';
typeof(window.mySuperVar); //string
window.mySuperVar; //text
console.log(window.mySuperVar); //undefined
// actual result: text
var myVar = "text";
console.log(window.myVar);
> undefined
> "text"
var myVar = "text";
console.log(window.myVar);
> text
> undefined
alert(window.mySuperVar)
function a() {
console.log(1);
return 2;
}
a();
1
2
<!DOCTYPE html>
<html>
<head>
</head>
<script>
var k = 3;
l = 5;
var load = function()
{
window.frames[0].$('body').click(function() { alert('Алерт'); });
}
</script>
<body>
<iframe onload="load()" src="http://raal100.narod.ru" width='500' height='500'></iframe>
</body></html>
window.frames[0].contentWindow.variable
Каждая ОВ назначает своё значение переменной “this”
this это свойство контекста выполнения (execution context), а не области видимости (scope).var b = 1;
function a() {
console.log('scope b:', b);
console.log('this b:', this.b);
// здесь небольшая магия, в es6, если не указано явно, this будет null,
// в es5 - глобальный объект
}
a();
a.call({b:2});
что обозначает ключевое слово this, и как оно относится с ОВ?
with. Он использует существующий объект в качестве ОВ.(function(){
var that = 42;
with({
"that": "foo",
"this": "bar"
}){
console.log(that);
console.log(this);
}
})();
this механизм ОВ не используется. А сам this — это ключевое слово, а не переменная, и ни в какой области видимости переменных не находится, точно так же, как и ключевые слова null, true или false.Это ссылка на саму локальную область видимости. Почему нельзя так сказать?
[].forEach.call($$("*"),function(a){a.style.outline="1px solid #"+(~~(Math.random()*(1<<24))).toString(16)})
Интересный поворот в том, что внутри одной ОВ все функции имеют доступ к любым другим, поэтому из публичных методов мы можем вызывать приватные, которые в глобальной ОВ недоступны
Всё, что вы хотели знать об областях видимости в JavaScript (но боялись спросить)