js学习中提到的知识点罗列
1.filter 条件过滤
2.map(提示: n*2)
回调中存在value及index两个值
参考:https://blog.csdn.net/liminwang0311/article/details/86480829
3.reduce(提示: 总和)
4.parseInt
参考
parseInt的返回值只有两种可能,不是一个十进制整数,就是NaN。
5.性能优化:防抖&节流
参考
防抖:高频触发事件影响浏览器性能,利用setTimeout进行延时判断
节流:高频触发事件影响浏览器性能,将高频触发事件与定时触发绑定,设定间隔触发时间
6.setTimeout和setInterval的区别
不同的是setTimeout在规定时间后执行完某个操作就停止了,而setInterval则可以一直循环下去
内存方面:setTimeout只需要进入一次队列,而setInterval因为不计算代码时间,有可能通知执行多次代码,从而造成内存溢出
- 试题
解答:
7.闭包
闭包= func + func内部可以访问到的变量
它的最大用处有两个,一个是可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。
参考
[参考]
8.内存溢出&内存泄漏
内存溢出:系统内存不够了
内存泄漏:一个变量占用内存后,不再被使用内存就一直被占用着,系统不会自动释放,叠加起来就会 报内存溢出
参考
9.js垃圾回收机制
可达性
JavaScript 引擎中有一个后台进程称为垃圾回收器,它监视所有对象,并删除那些不可访问的对象
参考
- 什么是垃圾回收机制
- 什么样的变量会被回收,整个流程(标记-清除算法)
- 如何优化
10.归并算法
试题
解法一:利用js函数,不走归并思路
解法二:归并思路
参考
11.斐波那契数列
//循环算法
function f(n){
if(n == 0){
return 0;
}else if(n ==1){
return 1;
}else{
var fn1 = 0;
var fn2 = 1;
var fnx = 0;
for(var i=0;i<n-1; i++){
var newfn1 = fn2;
fnx = fn1 + fn2;
fn1 = fn2;
fn2 = fnx;
}
return fnx;
}
}
//===============================
//递归算法
function fib(count) {
//参数判断
var count = parseInt(count);
if (isNaN(count) || count <= 0) {
return 0;
}
function f(count) {
if (count <= 2) {
return 1;
}
return f(count - 1) + f(count - 2);
}
return f(count);
}
12.axios
参考
13.margin塌陷问题
垂直方向上相邻的两个box的边距不会为两者之和,而是取其中的最大值
参考
参考
14.消除浮动问题
参考
15.两栏自适应布局
参考
16.垂直居中一个浮动元素
参考
17.ajax相关试题
参考
ps.一些细节
1.var 的变量提升导致 i 提升成了函数作用域的变量而不是 for 作用域内的变量。解决方法将 var 改成 let 防止循环变量提升成函数变量。
2.concat:拼接数组
8.split&substr&slice