递归
—通俗来讲就是在一个函数体内调用该函数
- 就拿斐波那契数列来讲递归,主要是找到规律,斐波那契数列的规律就是前两位加起来的和就是第三
function fn(x){
var num1 = 0;
var num2 = 1; // 这里是定义斐波那契数列的前两位
var num3 = 0;//这里定义之和
for(var i =1;i<=x;i++){
num1 = num2;
num2 = num3;
num3 = num1 + num2;
}
return num3;
}
console.log(fn(9))
— 这就是求出斐波那契数列的第九位可以通过这个规律来找到一个公式
function FB(x){
if(n == 1 || n == 2){
return 1
}
return FB(n - 1) + FB(n - 2)
}
console.log(FB(9))
—上面不算意义上的递归,下面这才是递归但是两个输出的结果是一样的
垃圾回收机制
- 就是浏览器会周期性的找出不再使用的变量,将其的标记删除然后释放内存,所以垃圾回收机制会按照内存占用的大小来周期性的执行释放内存
- 回收的方式:清楚标记和引用计数
-
因为这个是无法控制的所以也不好演示,是浏览器根据占用内存来执行的
js的报错类型
—报错类型可以更快的帮助我们找到bug并处理掉
1. EvalError:eval() //使用和定义不一致的报错;
2. RangeError //使用的某个数值越界
3. SyntaxError //使用了非法或者不能被识别的引用数值
4. TypeError //某种类型的错误
5. URIError //URI处理函数使用的不当
this关键字
---- this无法被赋值
this是指向某个对象的
- this在全局的作用下是直接指向window
- 在其他的作用时,谁调用该函数this就指向谁
function fn(name){
this.name=name;
console.log(this.name);
console.log(this);
}
var num = fn("李三")
- 第一个this是指向fn、第二是指向window