发表于: 2020-05-16 22:14:53
0 2237
今天完成的事情:
作用域链大概就是这么个原理
GO中有函数a先定义a.[[scope]]
0:GO
执行函数时生成上下文AO,向第一位添加aAO
0:aAO
1:GO
如果函数a中还有函数b,先定义b.[[scope]]在函数a中定义
0:aAO
1:GO
执行函数b时生成上下文,向第一位添加bAO,顺着作用域链从上到下查找
0:bAO
1:aAO
2:GO
预编译
闭包
var arr = [];
for(var i=0;i<5;i++){
arr[i]=function(){
console.log(i);
}
}
上面这种写法调用arr[0],得到的i是6,因为调用的时候顺着原型链在GO中找到的i就是6
var arr = [];
for(var i=0;i<5;i++){
(function (j){
arr[j]=function(){
console.log(j);
}
}(i))
}
把i当成参数传给立即执行函数,每一次调用其赋值给arr的函数都是在立即执行函数环境上定义的
当执行函数arr[0],会从立即执行函数原型链AO中找到0,arr[1]是1
明天计划的事情:
继续学习
遇到的问题:
无
收获:
按淘宝做了一个无缝轮播图
思路就是第一张放最后一张图片,最后一张放第一张图片
比如图片为3,宽度用JS动态设置为3+2
设置变量0,比如0为第一张,1是第二张(显示的第一张) (-变量-1)* 一张图片的宽度 初始化图片位置
然后判断边界迅速回到第一张或最后一张
链接:https://zhuchunyu1995.github.io/xzy/JS/banner/banner.html
评论