一. 函数的定义
1. 构造法
// 格式 new Function(args,body) var fun1 = new Function('a','b','return a + b');
2. 声明法
function fun2(a,b) { return a+b; }
3. 表达式法
var fun3 = function(a, b) { return a + b; }
二. 声明法与表达式法的区别
1. 定义的位置与调用的位置
- 声明法会在解析阶段将定义提升,可以在定义前使用。
- 表达式法则不会提升,会报错。
2. 立即执行
//通常采用,表达式法 函数体的()可省略
var r3 = (function(){})();
三. 关于this
- 解析器在调用函数时每次都会向函数内部传递进一个隐含的参数,即 this, 代表着当前上下文对象。
- this 的指向:
- ①当function以普通函数调用时,指向全局对象(浏览器:window;nodejs:global);
- ② 当function作为对象的方法调用时,指向该对象。