函数知识点-----第一次记录

变量提升

var a=123;
function f(){
	alert(a);   //弹出为undefined
	var a=1;
	alert(a);  //弹出为1
};
f();

函数域始终优先于全局域,所以局部变量a会覆盖掉所有与它同名的全局变量,尽管在alert()第一次被调用时,a还没有被正式定义,但该变量本身已经存在于本地空间了,这种特殊的现象叫做提升

当JavaScript执行过程进入新的函数时,这个函数内被声明的所有变量都会被移动(或者说是提升)到函数最开始的地方。这个概念很重要,必须牢记。另外需要注意,被提升的只有变量的声明,并不会赋给变量的值

函数也是数据

javascript中的函数也是一种数据,只不过这种特殊的数据类型有两个重要的特性
1.他们所包含的是代码
2.他们是可以执行的(或者是可调用的)

var f=function(){
	return 1; 
}

匿名函数

  1. 可以将匿名函数作为参数传递给其他函数
  2. 定义某个匿名函数来执行某些一次性任务。

回调函数

当我们将函数A传递给函数B,并有B来执行A时,A就成了回调函数,如果这时A还是一个无名函数,就称为匿名回调函数

function invokeAdd(a,b){
	return a()+b();
};

什么时候使用回调函数

1.它可以在我们不做命名的情况下传递参数
2.我们可以将一个函数的调用操作委托给另一个函数
3.有助于提升性能

回调示例

function multiplyByTwo(a,b,c,callback){
	var i,
		ar=[];
	for(var i=0;i<3;i++){
		ar[i]=callback(arguments[i]*2);
	};
	return ar;
};

function addOne(a){
	return a+1;
};
//调用方式
multiplyByTwo(1,2,3,addOne);

猜你喜欢

转载自blog.csdn.net/u012773082/article/details/87868114