1.改造下面的代码,使之输出0-9,写出你想到所有的方法react必考的50个面试题。
每次输出i的时候,函数内部没有i,就从外部函数查找,而外部函数的值是每一次循环后的值10,所以每次输出的都是10
for(var i=0;i<10;i++){
setTimeout(function(){
console.log(i);// 10 10 10 10 10 10 10 10 10 10
},1000)
}
第一种方法是将var改为let,因为var为全局变量,存在变量提升的情况。而let为块级作用域,不存在这种情况。
for(let i=0;i<10;i++){
setTimeout(function(){
console.log(i); // 0 1 2 3 4 5 6 7 8 9
},1000)
}
第二种方法是利用闭包。 i 以函数参数形式传递给内层函数:
for(var i=0;i<10;i++){
(function (i) {
setTimeout(function () {
console.log(i); //0 1 2 3 4 5 6 7 8 9
}, 1000)
})(i)
}
- 常见的三种排序方式
- 深拷贝和浅拷贝的原理
- react的路由原理
- react常考的面试题
-
HTTPS和HTTP的区别主要如下:
1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
5、TTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。
简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。