this解释,作用域、变量定义、闭包

<script>
//在私有作用域中,出现一个变量,我们看他是否为私有的,是否为形参,是否是预解释了,有一个的话,则这个函数中出现的所有的这个变量都是私有的,如果一个都不是,往上一级作用域找,上一级没有,则继续往上一级找,一直找到window;
/*
var n=9;
var s="str";
function fn(){
alert(n);
alert(s);
//s="珠峰培训"
n=7;
var n=6;
}
fn();
alert(n);
alert(s);
* */
//如何的查找上一级作用域;
//就看当前作用域是谁,
/*
function fn1(){
var a=12;
function aa(){
a++;
console.log(a);
}
return aa;
}
var f=fn1();
function fn2(){
var a=1;
f();
}
fn2();
* */
//当一个大函数(FN)执行,会形成一个私有作用域,并且,这个函数(FN)返回了一个引用数据类型数据(通常是小的函数fn),并且外面有一个变量接受了这个函数(FN)返回的值(fn);此时FN形成形成的那个私有作用域就不能销毁了;
// 如果外面没有一个变量接受,属于不理解销毁,浏览器空间的时候会销毁;

//i++和++i区别:都是资深加1;
// 区别:在和其它的值运算的时候的顺孙有区别。先和别的值运算,运算完成后,自身再加1;(n+i++是5先+i,运行完以后i再自增(n+(++i)是i先自增和,自增后的结果和n运算;

//点赞效果,讲5文件;
// 自定义属性是项目中非常常用的思想;原理其实就是给元素增加一个自定义属性名,存一个值;起到临时存储的作用,我们 每一次可以通过这个属性值判断做哪些操作,也可以获取这个值戒指用;也可以修改这个值(临时存储和使用);
//自执行函数属于定义和执行一起完成了;
// this:this是当前行为的主题;
// context;上下文;
// this:行为执行的主体;
// A去饭店吃饭,饭店那个屋子就是上下文,也就是活动范围,A就是this,是当前吃饭这件事的主体;


// ;1、给元素绑定事件,函数中的this就是当前被绑定事件的元素;
// 2、函数执行,里面this这样找,看函数名之前没有“.”,有的话“.”之前是谁,就是谁;没有的话就是window;
// this是谁,和在哪执行与在哪定义没有半毛钱关系;
// 3、不管自执行函数写在哪,里面的this就是window;

//innerHTML和arguments都既不是关键字也不是保留字;

/*
function aa(){
console.log(this)//这个时候不知道this是谁,因为函数没有执行的了;
}
* */
//4、14、6页、选项卡用闭包的方式做。;
</script>