四: 函数
- 函数定义方式: 函数声明 函数表达式 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);