前端面试题加更中……

js高级知识内容

1.setInterval/setTimeout详解

setInterval(function(){
	alert(1)
},1000)//一秒执行一次一直循环

setTimeout(function(){
	alert(1)
},6000)//延迟6秒执行后停止定时器

2.批量添加事件(事件委托)

  var stars = document.getElementsByTagName("i");
// 首先获取所有i标签
 
for (var i=0;i<stars.length;i++){
	stars[i].index = i;
}
// 为每个标签添加自定义属性index,值为标签的key值
 
for (var i=0;i<stars.length;i++) {
	stars[i].onmouseover = function(){
		lightStars(this.index);
	}
	stars[i].onmouseout = function(){
		offStars(this.index);
	}
	stars[i].onclick = function(){
		alertStars(this.index);
	}
}
//通过循环为每一个元素添加事件,注意的一点是,获取index值的时候,需要用this,而不是stars[i]

3.闭包(本质,原理,构成,作用,缺点)

定义:闭包函数:声明在一个函数中的函数,叫做闭包函数。
闭包:内部函数总是可以访问其所在的外部函数中声明的参数和变量,即使在其外部函数被返回(寿命终结)了之后。
特点:让外部访问函数内部变量成为可能;局部变量会常驻在内存中;可以避免使用全局变量,防止全局变量污染;	
缺点:会造成内存泄漏(有一块内存空间被长期占用,而不被释放)解决方法是退出闭包时把不用内部的变量删除
闭包的创建:闭包就是可以创建一个独立的环境,每个闭包里面的环境都是独立的,互不干扰。闭包会发生内存泄漏,每次外部函数执行的时 候,外部函数的引用地址不同,都会重新创建一个新的地址。但凡是当前活动对象中有被内部子集引用的数据,那么这个时候,这个数据不删除,保留一根指针给内部活动对象。
闭包内存泄漏为: key = value,key 被删除了 value 常驻内存中; 局部变量闭包升级版(中间引用的变量) => 自由变量;
     例:
      function sun(){
         var a=10;
         return function(){
            alert(a)
		 }
	  }
      var b = sun()
       b()

4.作用域链

每一段 JS 代码(全局代码或函数)都有一个与之关联的作用域链。
这个作用域链是一个对象列表或者链表,这组对象定义了这段代码中“作用域中” 的变量。
当 JS需要查找变量 x 的值的时候,它会从链的第一个对象开始查找,如果这个对象有一个名为 x 的属性,
则 会直接使用这个属性的值,如果第一个对象中没有名为 x 的属性,
JS会继续查找 链上的下一个对象。
如果第二个对象依然没有名为 x 的属性,则会继续查找下一个,以此类 推。
如果作用域链上没有任何一个对象含有属性 x,那么就认为这段代码的作用域链上不存 在 x,
并最终抛出一个引用错误(ReferenceError)异常

5.匿名函数(本质,和普通函数的区别,调用方式)

匿名函数:如 var a=function(){ return 1 };
此函数function 没有函数名,但是它将值赋给了变量 a
普通函数: function abc(){  return 1  };
此函数声明了一个名为abc的函数。

以上简单理解,下篇作者会小小的说一下axios跨域,敬请关注

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值