详谈javascript的函数

版权声明:EGEEK https://blog.csdn.net/qq_41604269/article/details/82882079

详谈javascript的函数

  • 函数是什么
  • 函数的创建
  • 函数的调用
  • 函数的参数
  • 函数对象的功能
  • 函数的返回值

函数是什么

首先,函数是一种对象

其次,函数可以封装一些功能代码,在需要时执行这些功能代码。


函数的创建

//多种方法创建函数

一:代码说明

//方法一:new关键字创建函数
var fun1 = new Function();

//方法二:函数声明创建函数
function fun2(){
//封装代码...
}

//方法三:函数表达式创建函数
var fun3 = function(){
//封装代码...
}

//方法四:构造函数创建函数(不建议使用)
var fun4 = new Function(
//封装代码...
);
 

二:文字说明

方法一:new关键字创建函数

var fun1 = new Function();

方法二:用函数声明创建函数 

语句:function 函数名(参数1,参数2,...,参数n){封装代码..}

例子:

function fun2(){

     alert("嘿嘿嘿");

}

方法三:函数表达式创建函数

语句:var 函数名 = function(参数1,参数2,...,参数n){封装代码..}

说明:这里的function(){}是个匿名函数,将这个匿名函数赋值给函数名

例子:

var fun3 = function(){

        alert("嘿嘿嘿");

}

方法四:构造函数创建函数(基本不用)

var fun = new Function(

   "嘿嘿嘿"

);     //封装的代码传给构造函数,实际开发中基本不使用构造函数来创建对象


函数的调用

封装到函数的代码不会立即执行,而是在调用函数时执行。当调用函数时,封装的代码会按照顺序执行。

语法:函数对象()

例如:fun()

<script>
//函数表达式创建函数
var fun = new Function(alert("嘿嘿"));
fun();
</script>

函数的参数

形参:

可以在函数的()中来指定一个或多个形参(形式参数),多个参数用,隔开,声明形参就相当于在函数内部声明对应的变量。

	var sum = function(a,b){
		alert(a+b);
	}

实参:

调用函数时,可以在函数的()中指定实参(实际参数),实参会赋值给函数中对应的形参。实参可以是任意数据类型

调用函数时,解析器(浏览器)不会检查实参的类型。

调用函数时,解析器(浏览器)不会检查实参的数量,如果实参的数量少于形参的数量,则未对应的形参值为undefined。如果实参的数量多于形参的数量,多余的实参不会被赋值。

sum(5,3);  //结果为8
sum("5",3); //结果为字符串"53"
sum(5);  //结果为非数值NaN,undefined是非数字,与任何值相加都得NaN
sum(5,3,10); //结果为8,多余的实参10被抛弃

参数可以是对象

因为实参可以是任意数据类型,所以参数可以用对象表示,把一系列的参数用对象封装,就解决了参数过多的问题。

举例:创建一个函数student(),实参是stu对象

	//大括号创建对象并添加属性
	var stu = {
		name: "小明",
		age: 18,
		address: "北京",
		department: "软件工程"
	}
	function student(obj){
		document.write("我叫"+obj.name+",今年"+obj.age+"岁,来自"+obj.address+",专业是"+obj.department);
	}

	//调用student()函数,stu对象作为参数
	student(stu);

参数可以是函数

举例1:创建一个新的函数fun2(),实参是student()函数

	//大括号创建对象并添加属性
	var stu = {
		name: "小明",
		age: 18,
		address: "北京",
		department: "软件工程"
	}
	function student(obj){
		document.write("我叫"+obj.name+",今年"+obj.age+"岁,来自"+obj.address+",专业是"+obj.department);
	}

    //函数表达式创建函数fun2
    var fun2(a) = function{
        a(stu);
}

//调用函数fun2,参数为函数student
fun2(student);

举例2:创建一个新的函数fun(),实参是匿名函数

//函数表达式创建函数
var fun(a) = function{
   alert("a="+a);
}

//fun调用匿名函数
fun(function(){alert(我是匿名函数);});

问题:student和student()有什么区别?

student是函数

student()是调用student函数,如果有返回值,student()就等于返回值后面的值!

注意:将函数当参数用,还是函数返回值当参数要分明!!!

注意:将函数当参数用,还是函数返回值当参数要分明!!!

注意:将函数当参数用,还是函数返回值当参数要分明!!!


函数对象的功能

功能一:因为函数也是对象,对象能做的事函数都能做 

对象名.属性 = 属性值

函数名.属性 = 属性值

例如

var fun = new Function();
fun.name = "属性名";
fun.digit = 321;

函数的返回值

调用函数后,变量return的值就是函数的执行结果

说明:

       1、return可以返回的值可以是任意数据类型

       2、return后的语句不会执行

       3、alert()也是一个函数,但是没有返回值,返回值是undefined(未定义)

//函数声明时创建函数
function fun(a,b,c){
var d = a+b+c;
return d;
//return后的语句不会执行
return 100;    //未执行
}

var sum;
//调用函数并将返回值赋给sum
sum = fun(1,2,3);

alert("sum="+sum);   //输出sum=6

猜你喜欢

转载自blog.csdn.net/qq_41604269/article/details/82882079