四: 函数
- 函数定义方式: 函数声明 函数表达式 new Function var fn = new Function('a', 'b', 'console.log(a+b)' ); fn(3,4) ; //5
- 函数声明和函数表达式的区别:
a.函数表达式相当于给变量赋值, 预解析中只有函数名提前
b.函数声明 整个函数都会提升,声明前后都可以调用
c.使用函数表达式解决 if判断中函数的提升造成的错乱
var f:
If(true){
f = function(){};
}else {
f=function(){};
}
3. 函数的不同调用方式种this的指向:
调用方式 | This指向 |
普通函数 | Window |
构造函数 | Window/实例对象 |
对象方法调用 | 所属对象 |
事件绑定 | 绑定事件对象 |
定时器 | Window |
三种改变函数中this指向的方法:
Call’ | fn.call(this, name,age) | 立即调用 |
Apply | fn.apply(this,[name,age]) | 立即调用 |
Bind | Var newFn = fn.bind(this, age,name) | 不调用,返回新函数 |
4. 函数的其他成员
Function fn(a,b,c){
console.log(fn.length); --形参个数
Console.log(arguments.callee); -- fn本身
Console.log(fn.caller); --调用者
Console.log(fn.arguments); --实参合集
Console.log(fn,name); --函数名
}
fn(10, “zs”, 30);