一.函数声明
格式:function 函数名称(){};
二.函数调用
函数是不会自己执行的,需要调用。调用方法:函数名称();
// 函数
function demo(){
alert(123);
}
// 调用函数
demo();
三.函数参数
1.function 函数名称(形参1,形参2,形参3…..){};
2.调用函数时括号里的值为实参,例:函数名称(实参1,实参2,实参3);
//函数参数
function demo(str,num,word){
alert(str+','+num+','+word);
};
// 传入实参
demo(3,4,5);
通常情况下,函数里的实参与函数调用里的形参是一一对应的,上述案例中函数本身定义了三个形参,分别为str,num和word。与之相对应的调用方法里也传入了三个值分别为3,4,5。此时alert输出在页面中的值是3,4,5。
// 利用函数求任意两个数之间的和
function getSum(start,end){
var sum = 0;
for(var i=start; i<=end; i++){
sum+=i;
}
console.log(sum);
}
getSum(1,100);
四.arguments的应用
概念:arguments是一个只关注实参的对象,是函数所独有的。它也是一个伪数组。
伪数组并不是真正意义上的数组。它具有数组的length属性;按照索引的方式进行存储;但是它没有真正数组的一些方法,例如pop(),push()等等。
// arguments应用
function fn(){
var total = 0;
for(var i=0; i<arguments.length; i++){
total += arguments[i];
}
alert(total);
}
fn(3,4,5,6,7);//最终求值25
// 利用arguments求任意个数的最大值
function getMax(){
var max = 0;
for(var i=0; i<=arguments.length; i++){
if(arguments[i]>max){
max = arguments[i];
}
}
return max;
}
console.log(getMax(19,112,389,56,18,123));
五.return的使用
概念:return不会在页面输出对应结果,可以调用alert、document.write、console.log等方法输出结果
// return的使用
function num(){
var total = 0;
for(var i=0; i<arguments.length; i++){
total += arguments[i];
};
return total;
}
document.write(num(45,55,65));
// 利用函数求数组中的最大值
function getArrMax(arr){
var max = 0;
for(var i=1;i<=arr.length;i++){
if(arr[i]>max){
max=arr[i];
}
}
return max;
}
var re = getArrMax([5,2,99,101,67,77]);
console.log(re);
六.匿名函数
格式:function(){};
匿名函数没有名称,所以无法直接调用。需要转换为函数表达式,再调用执行
// 匿名函数调用
var fns = function(){
alert("Hello");
}
fns();
函数声明和函数表达式的区别**
函数声明是不看调用顺序的,调用方法无论写在函数之前或之后都是可以正常执行的
函数表达式必须要看调用顺序,调用方法必须写在函数之后,自上而下执行,否则不会执行并且报错
立即执行函数
格式:
(function(形参){
函数体
})(实参);
// 匿名函数的自我执行
(function(str1,str2){
alert(str1);
})("hello","world");
七.函数综合案例
//依据用户输入的年份,利用函数相互调用,输出2月份的天数
function backDay(){
var year = prompt('请输入年份');
if(isRunYear(year)){
alert('闰年二月份为29天');
}else{
alert('平年二月份为28天');
}
}
backDay();
function isRunYear(year){
var flag = false;
if(year%4 == 0 && year%100 != 0 || year%400 == 0){
flag = true
}
return flag
}