//回调函数: 把一个函数当参数传给另个函数
/* function f1() {
console.log('f1');
}
function f2(f) {
f();
console.log(1);
}
f2(f1);*/
//arr.forEache
//1.回调函数: 执行5次
//2.回调函数参数: item,index,arr
var arr = [11, 22, 33, 44, 55];
/*arr.forEach(function (i) {
console.log(arguments);//3个参数[11, 0, Array(5)].
console.log(i);
});
console.log('ok2');*/
//自己传参
/*arr.forEach(function (item,index,input) {
console.log(item);
});*/
//forEach的特点
//1.不返回值
//2.不修改原来数组
//但是可以手动修改
/*var res = arr.forEach(function (item, index, input) {
input[index] = item * 10;
console.log(input);
});
console.log(arr);
console.log(res);
*/
//arr.map 1,克隆一份原arr 2,对克隆的进行修改
/* var res = arr.map(function (item, index, input) {
return item * 10; //return什么,就相当于修改当前item为啥
});
console.log(arr);
console.log(res);*/
//匿名函数中this是window
var obj = {'name': 'maotai'};
/*arr.forEach(function (item, index) {
console.log(obj);
}).call(obj);*/
//forEach中的this是arr
//匿名函数中的this是window
/* arr.forEach(function (item, index) {
console.log(obj);
}, obj); //第二个参数意思是将匿名函数中this改为obj(默认window)*/
//sort不支持传参改变匿名函数this指向
/*arr.sort(function () {
console.log(this);
});*/
//定时器不支持改变this, 是改变时间的
/* setTimeout(function () {
},2000)*/
//replace不支持传参改变匿名函数this指向
/* 'maotai'.replace(/w/g, function () {
console.log(this);
})*/
//对于不支持第二个参数的,使用bind来改变
'maotai'.replace(/w/g, function () {
console.log(this);
}.bind(obj));