前言
函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。
最简单的函数
函数定义:
函数就是包裹在花括号中的代码块,使用关键词 function 定义,函数名 functionname 是可以自定义的(必须符合标识符的命名规则)。
function functionname() { 执行代码(函数体) }
函数调用:
functionname();
当调用该函数时,会执行函数内的代码。
可以在某事件发生时调用函数(比如当用户点击按钮时),也可由 JavaScript 在任何位置自由调用。
实例代码:
//编写函数,计算 1+2+...+99+100 的总和 //函数定义 function total() { for(var i = 1,result = 0 ; i<=100 ; i++) { result += i ; } console.log(result); } //函数调用,调用一旦发生就会去执行函数定义部分的代码 total();
带参数的函数
定义语法:
function myFunction(var1,var2) { 代码块(函数体) }
调用:
myFunction(argument1,argument2);
函数定义部分的参数称为“形式参数”,简称形参;参数个数、参数名称、参数类型、参数顺序都是由定义函数的人来指定。
函数调用部分的参数称为“实际参数”,简称实参;参数的个数、类型、顺序要根据“形参”来定。
函数调用时会发生一个隐含动作“参数传递”,简称传参;“传参”的方向是从函数调用处到函数定义处; JavaScript 函数调用时没有对实际参数进行类型检测、个数检测。
函数调用时的传参,类似于变量赋值(形参变量 = 实参)。
实例代码:
//编写函数,计算 1+2+...+n-1+n 的总和( n是正整数 ) //函数定义 function total(n) { for(var i = 1,result = 0 ; i<=n ; i++) { result += i ; } console.log(result); } //函数调用 total(10) ; //输出 55 total(100) ; //输出 5050 total(); //可以成功调用,但结果可能不正确(传参少于规定个数)。 total(10,20,30); //可以成功调用,多余的参数会被丢弃(传参多于规定个数)。 //JavaScript 函数调用是比较随意的(只要函数名一致即可),实际应用中为了得到正确合理的结果,必须按照函数定义时的参数个数、顺序、类型来传参。
带有返回值的函数
定义语法:
function myFunction() //此处忽略参数,为了将注意力转移到return { 代码块(函数体) return xxx ; //返回语句,用于从函数内部返回数据。 }
调用:
var myVar = myFunction(); //函数调用 "myFunction()" 所返回的值 ,保存在myVar 变量中。 console.log( myFunction() ); //函数调用 "myFunction()" 所返回的值,可以直接输出。
实例代码:
//编写函数,计算两个圆的面积之和。半径分别为:10,20 function area(r) { return Math.PI*r*r; } console.log(area(10)+area(20));
函数的 return 语句主要用于将函数内部运算的结果返回(返回到函数调用处),以便进一步参与其他运算。
函数返回的值最终作为函数调用表达式的值(函数调用语句本身就是个表达式)。
函数中,写在 return 语句下面代码会被忽略。
如果您仅仅希望退出函数 ,也可使用 return 语句(不能带有返回值):
//编写函数,计算圆的面积 function area(r) { if(r <= 0) { alert('半径必须是正数'); return; //如果r<=0,return会立即结束函数执行,下面的代码没有机会执行 } return Math.PI*r*r;//只有在r>0的情况下会执行,返回圆的面积 } console.log(area(-10)); //不会有输出 console.log(area(10)); //输出 314.1592653589793