在js中,函数表达式和函数声明是有区别的:解析器会率先读取函数申明,并使其在执行任何代码之前可用, 函数表达式则必须等到解析器执行到它所在的代码行,才能被解释执行。
在函数内部,有两个特殊的对象:arguments
和this
arguments.callee
:指向拥有arguments对象的函数。
arguments.caller
:指向调用当前函数的函数的引用。
每个函数都包括两个非继承而来的方法:call() apply()
function a(b,c){
return b+c;
}
function d(e,f){
return a.apply(this,arguments)
}
console.log(d(1,2));
他们两个区别在于:接受参数的方式不同。call()方法需要将参数逐个列举出来,而apply()接受参数数组,也可以是arguments对象。
apply()和call()真正的使用场景是扩充函数作用域。