js函数几个重要内容

js函数几个重要内容:

js中不存在函数重载,如果定义了多个同名函数,最后一个会覆盖掉前面所有函数。

 

1:Arguments对象(可以实现模拟重载的效果)

利用arguments对象的length属性,可以获取函数接收的参数的个数

 

例如:

 

function add(){
	if(arguments.length == 2){
		return arguments[0] + arguments[1];		
	}else if(arguments.length == 3){
		return arguments[0] + arguments[1] + arguments[2];
	}
}	

add(2,4);    //output      6
add(2,4,5);    //output     11

 

 

 

2:变量的作用域

在js中定义变量是可以不用var修饰符的,定义局部变量时,如果没有使用var修饰符,

js会自动将这个变量定义为全局变量

例如:

 

var a = "a";

function fn(){
	b = "b";

	alert(a);   //output   a
	alert(b);   //output   b
}

fn();

alert(a);  //output   a
alert(b);  //output   b

 

 

全局变量和局部变量同名,函数在调用时,会寻找局部变量(js中,局部变量的优先级高于全局变量)

 

例如:

 

var a = "a";  //定义并初始化变量a

function fn(){   //函数fn加载,未调用
	alert(a);  //output   undefind

	var a = "b";  //定义变量a,但未初始化

	alert(a);   //output   b
}

fn();    //调用函数fn
alert(a );   //output   a

 

 

3: js中的几种特殊函数

 

(1)匿名函数:(可以将函数作为参数传递)

可以定义某个匿名函数来执行某些一次性任务

function(参数){方法体}

例如:

 

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

var one = function(){
	return 2;
};
var two = function(){
	return 4;
};

alert(add(one,two));    //output   6

 

 

one 和 two 是函数

调用函数 add() 时,将 one 和 two 函数作为参数传递

函数 add() 在调用时,分别执行了函数 one 和 two

将函数 one 和 two 的运算结果,再次进行运算

这时,函数 one 和 two 就叫做回调函数

 

(2)回调函数:就是以函数作为参数传递给另外的函数来调用,作为参数的函数就叫做回调函数

 

alert( add( function(){return 2;}, function(){return 4;} ) );  //output   6

 

这里作为参数传递的匿名函数,就叫做匿名回调函数

 

(3)自调函数:(一般情况下,自调函数封装的函数都是匿名函数)用来执行某些一次性任务

第一个小括号:封装函数

第二个小括号:调用封装的函数

 

例如:

不含参数:

(
	function(){
		alert("javaScript");
	}
)();

 

 

含有参数:

(
	function(str){
		alert(str);
	}
)("hello");

 

 

(4)私有(内部)函数:

节省了全局的命名空间

保证了私有性:只能自己范围内使用,外部不能访问

 

例如:

function fn(){
	var a = "hello";

	function n(){
		return a + "javaScript";
	};

	return n();
}

alert(fn());  //output  hello javaScript
alert(n());    //output    undefind

 

 

(5)返回函数的函数:

 

例如:

function fn(){
	//逻辑
	return function(){
		//逻辑
		return "javaScript";
	};
}

alert(fn());  //output   function(){return "javaScript";}

//要打印“javaScript”
alert(fn()());   //output   javaScript
var fun = fn();
alert(fun());   output

Tagged: ,

Comments are closed.