1.严格模式
为全局脚本开启严格模式: ' use strict';
1 在严格模式下声明变量必须要写关键字var
2 不允许删除变量
3 严格模式下全局作用域中函数中的this是undefined
4 严格模式下,如果 构造函数不加new调用,this指向的是undefind如果给他赋值就会报错
2.高阶函数
条件:
参数是函数
函数作为返回值
3.闭包
概念:内部函数访问其所在的外部函数中声明的参数和变量,形成的词法环境叫闭包.
闭包有三个特性:
- 1、函数嵌套函数
- 2、函数内部访问外部函数的参数或变量
- 3、可以使函数中的变量可以长期驻扎在内存
-
使用闭包的好处:
- 1、变量长期驻扎在内存中
- 2、避免全局变量的污染(多人定义同样名字的全部变量冲突)
- 3、私有成员的存在
使用闭包的坏处:
- 1、常驻内存
- 2、会增大内存的使用量
- 3、使用不当会造成内存泄露
4 递归
递归:让函数在内部自己调用自己
递归必须要加退出条件
例:递归求阶乘
function sum(num) {
if (num == 1) {
return 1;
} else {
return num * sum(num - 1);
}
}
var rel = sum(4);
console.log(rel);