函数参数
- arguments.callee:当前的函数本身
- arguments.callee.caller:当前函数是在哪执行的->在全局作用域下执行,值是null; # 函数参数
回调函数
- 把一个函数B当做一个值传递给另外一个函数A
- 回调函数模式中,我们传递进去的那个函数在执行的时候,一般情况下里面的this都是window
- 我们可以使用call/apply来强制改变回调函数B中的this指向
- 不仅仅可以改变this,而且还可以给回调函数B传递参数值
- 不仅仅可以传递参数中,而且还可以接收回调函数B执行完成的返回值
- sort方法中的this->array
function A(callback) {//->callback=xxxfff000
//->typeof callback === "function" ? callback() : null;
for (var i = 0; i < 5; i++) {
callback && callback();//->B方法中的this是window,和obj没啥关系
callback && callback.call(obj);//->我们可以使用call/apply来强制改变回调函数中的this指向
callback && callback.call(obj, 100, 200);
var total = callback.call(obj, 100, 200);
console.log(total);
}
//->arguments.callee.name:当前的函数名
//->arguments.callee.length:当前函数形参的个数
console.log(arguments.callee.name);
}
异步编程
所有的定时器都是异步编程:设置一个定时器,设定一个等待的时间,首先把这件事情放在等待的任务队列中,继续执行下面的事情,当下面的事情都完成了,在返回头看等待的队列中是否有到时间的,有的话执行,没有的话继续等
注意:只有当主任务队列中的事情都结束了,我们才会返回头看等待的任务队列,也就是我们定时器设置1000ms后执行,但是不一定过1000ms就执行,可能更晚