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