前端常见面试题总结(一)

一. 闭包

1.闭包是什么?

闭包是一个函数加上到创建函数的作用域的连接,闭包"关闭"了函数的自由变量

2.闭包解决了什么问题(优点)?

2.1	内部函数可以访问外部函数的局部变量
2.2	闭包可以解决的问题
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
var lis = document.getElementByTagName('li');
for(var i = 0; i<lis.length;i++){
(function(i)){
lis[i].onclick = function(){
alert(i)
		}
	}
}

上方代码每次点击会依次打印出来 0,1,2,3,如果此地方不用闭包的方式,那么每次点击打印的都是4

3.闭包的缺点

3.1  变量会驻留在内存中,造成内存损耗问题
3.2  内存泄漏【ie】 ==> 可说可不说,如果说一定要提到ie

二.原型链

1.原型可以解决什么问题
对象共享属性和共享方法
2.谁有原型
函数拥有:prototype
对象拥有:_proto_
3.对象查找属性或者方法的顺序
先在对象本身中查找 ==> 构造函数中查找 ==> 对象的原型 ==> 构造函数的原型中 ==>当前原型的原型
4.原型链
4.1 是什么?
就是把原型串联起来
4.2 原型链的最顶端是null

在这里插入图片描述

三.localStorage,cookie,sessionStorage的区别

1.localStorage的特点

location(本地) 就保存在本地电脑上,一直有,除非我硬盘没了或者手动删除

2.sessionStorage的特点

session(会议),开完会就解散,关闭浏览器就翻篇了

3.cookie的特点

cookie小饼干很好吃,吃一次很难忘,关了浏览器下次还记得味道,但是量太少不够吃(内存小),还放不长容易发霉(有生命周期)

四.var、let、const区别

1.共同点

都是可以声明变量

2.不同点

区别一:
var具有变量提升机制
let(会有暂时性死区问题)和const没有变量提升机制

区别二:
var 可以多次声明同一个变量
let和const不可以多次声明同一个变量

区别三:
var、let是声明变量的
const声明常量

var和let声明的变量可以再次赋值,但是const不可以再次赋值

区别四:
var声明的变量没有自身作用域
let和const声明的变量有自身的作用域

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值