(基础点复习三)

var arr = [0,1];
arr[5] = 5;
var newArr = arr.filter((x)=>{
    return x === undefined
})
 
console.log(newArr.length);

答案:0

知识点:

  • 当声明一个数组长度的时候,如果这个数组的长度小于声明长度,那么数组剩余位置就会被empty填满,直到达到声明的长度
  • 位置为空的数组元素返回undefined
  • filter不会对空数组进行过滤(也不会对空元素进行过滤)
const value = 'value is' + !!Number(['0']) ? 'aaa' : 'bbb';
console.log(value);

答案:‘aaa’`
``
知识点:

 - +运算符的优先级大于?运算符的优先级
 
 **eval的实际用途**
 3.JSON.parse和eval()都可以将**字符串解析为对象**
 	
 - JSON.parse()只能解析正常的JSON字符串,也就是属性名必须带引号,否则会抛出异常
 - eval()不仅可以解析正常的JSON字符串,还可以解析属性名不带引号的对象字符串
 - `eval("({a: 1})") // {a: 1}
 
JSON.parse("({a: 1})") // Uncaught SyntaxError: Unexpected token ( in JSON at position 0`

**让函数中的代码在作用域中运行**
4.eval()和new Funcrion()都能动态解析和执行js字符串
	

 - eval中的代码执行时的作用域为当前作用域,它可以访问到函数中的局部变量
 - new Function执行时的作用域始终为全局作用域
 - 

5.reduce()的用法
	reduce()是数组的合并方法,与forEach(),map(),filter()等迭代方法一样都会对数组每一项进行变量,但是reduce可以将前面数组项遍历的结果与当前数组项进行运算,这一点是其他方法不具备的
 - 求数组项之和
 	var  sum = arr.reduce(function(prev,cur){return prev+cur},0);
 -求数组最大项
 		var  max=arr.reduce(function(prev,cur){return Math.max(prev,cur)});
 - 数组去重
 		var newArr=arr.reduce(function(prev,cur){
			prev.indexOf(cur)===-1 && prev.push(cur);
},[])
其他处理数组的方法:
	 forEach()无返回值,map()和filter()返回新数组,every()和some()返回布尔值
 	五种遍历方法均为ES5方法

6.闭包
	一个内部函数中引用了外部函数中的局部变量,这样形成的组合叫做闭包,闭包能够让你在一个函数访问到其他函数的局部变量,
 优势的话就是能够延长变量的生命周期,使其不会被内存机制回收,缺点的话容易造成内存泄漏
 	解决内存泄漏:
 			在退出函数的时候,将变量赋值为null,一段时间后js的垃圾回收机制会自动清理
 			闭包的面试题:
 			

	```bash
	(function(){
    var array = [1, 2, 3];
    for(var i = 0; i < array.length; i++){
        console.log(i)
        setTimeout(function(){ 
            console.log(array[i]);
        }, i * 1000);
    }
})(); 
//应该改为
//完善代码
(function(){
    var array = [1, 2, 3];
    for(var i = 0; i < array.length; i++){
        console.log(i)
        var j=0;
        setTimeout(function(){  //这就是一个闭包函数
            console.log(array[j]);
            j++;
        }, i * 1000);
    }
})(); 

	```
闭包的应用场景:
防抖:对于短时间内连续触发的事件(比如说监听页面的滚动事件),加一个时间的限制,在这个时间限制内事件处理函数只执行一次
节流:对于短时间内连续触发的事件,可以触发多次函数,但是自己可以设置频率
	


 		
 	
版权声明:本文为CSDN博主「墨语轩」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/MFWSCQ/article/details/105110760
版权声明:本文为CSDN博主「你的麦克疯」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_36378232/article/details/112296575
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值