☞ 考查闭包
for(var i=0;i<5;i++){
setTimeout(function(){
console.log(i);
},1000);
}
console.log("hello",i);
//打印
//hello 5
//5个5
☞ 考查同步异步
(function(){
console.log(1);
new Promise(resolve=>{
console.log(2);
resolve(2)
}).then(data=>{
console.log(data);
})
setTimeout(function(){
console.log(3);
},1000);
setTimeout(function(){
console.log(4);
},0);
console.log(5);
})()
//打印
//1,2,5,2,4,3
☞
var a={};
var b={key:'bb'};
var c={key:'cc'};
a[b]=44;
a[c]=55;
console.log(a[b]);
//打印
//55
☞ JavaScript两个变量交换值(不使用临时变量)
var a = 1,
b = 2;
a = [a, b];
b = a[0];
a = a[1];
☞ 设置一个时间为10s,要求每秒打印出剩下的时间
(function(){
var time=10000;
var timer=setInterval(function(){
time-=1000;
if(time==0){
clearInterval(timer);
}else{
console.log(time);
}
},1000);
})()
☞ 输出2的n次方
function pow(num, pow) {
var re = 1;
for (var i = 0; i < pow; i++) {
re *= num;
}
console.log(re);
}
pow(2, 5);
且慢,还要考虑n是无穷大的时候,超出了计算机的计算范围呢?
☞ 考查this
var a={
foo:"foo",
fn:function(){
var self=this;
return function(){
console.log("1",self.foo);
console.log("2",this.foo);
}
((function(){
console.log("3",self.foo);
console.log("4",this.foo);
})())
}
}
a.fn();
//打印
3 foo
4 undefined
1 foo
2 undefined
☞ https的原理
https://www.cnblogs.com/zhangshitong/p/6478721.html
☞ 用js实现深拷贝
https://www.jb51.net/article/99013.htm
☞
![](https://img.haomeiwen.com/i4652507/e58785d6de339b1d.png)
此时,cc的高度是150,如果将aa的position改为absolute,则cc的高度为50,因为absolute脱离了文档流。
☞ :key的作用
key 的特殊属性主要用在 Vue 的虚拟 DOM 算法,在新旧 nodes 对比时辨识 VNodes。如果不使用 key,Vue 会使用一种最大限度减少动态元素并且尽可能的尝试修复/再利用相同类型元素的算法。使用 key,它会基于 key 的变化重新排列元素顺序,并且会移除 key 不存在的元素。
☞ 为什么在vue的组件中,data要用function返回对象呢?
当一个组件被定义, data 必须声明为返回一个初始数据对象的函数,因为组件可能被用来创建多个实例。如果 data 仍然是一个纯粹的对象,则所有的实例将共享引用同一个数据对象!通过提供 data 函数,每次创建一个新实例后,我们能够调用 data 函数,从而返回初始数据的一个全新副本数据对象。
其实也很好理解,大概意思就是:
类比与引用数据类型。如果不用function return 每个组件的data都是内存的同一个地址,那一个数据改变其他也改变了,这当然就不是我们想要的。用function return 其实就相当于申明了新的变量,相互独立,自然就不会有这样的问题;js在赋值object对象时,是直接一个相同的内存地址。所以为了每个组件的data独立,采用了这种方式。
如果不是组件的话,正常data的写法可以直接写一个对象,比如data:{ msg : ' 下载 ' },但由于组件是会在多个地方引用
的,JS中直接共享对象会造成引用传递,也就是说修改了msg后所有按钮的msg都会跟着修改,所以这里用function来每次返回一个
对象实例。
☞ position的几个取值
![](https://img.haomeiwen.com/i4652507/70aa3a9a226a4621.png)
☞ Promise
var p = new Promise((resolve, reject) => {
console.log(1);
resolve(2);
console.log(3);
});
p.then(res => {
console.log(res);
new Promise((resolve, reject) => {
console.log(4)
});
console.log(5);
});
setTimeout(function () {
console.log(6);
}, 0);
// 1
// 3
// 2
// 4
// 5
// 6
☞let的暂时性死区
let a = 2;
if (true) {
console.log(a);
let a = 3;
}
//报错
let a = 2;
if (true) {
let a = 3;
console.log(a);
}
//3
网友评论