//函数计算1-100的和 functiongetSum() { var sum = 0; for (var i = 1; i <= 100; i++) { sum += i; } console.log(sum); } //声明 getSum(); //调用
「3.函数的参数」
形式参数:函数定义时,传递的参数(实参值传递给形参,不用声明的变量)
实际参数:函数调用时,传递的参数
1 2 3 4 5 6
// 带参数的函数声明 function 函数名(形参1,形参2,形参3...) { 函数体; } // 带参数的函数调用 函数名(实参1,实参2,实参3...);
函数形参和实参数量不匹配时
参数个数
说明
实参 = 形参
输出正确结果
实参 > 形参
只取到形参的个数
实参 < 形参
多的形参定义为 undefined,结果为 NaN
1 2 3 4 5 6 7 8 9
functiongetSum(a, b, c) { return a + b + c; } // js中形参的默认值是undefined。 // 调用函数 var n = getSum(1, 2);// n = NaN var n = getSum(1, 2, 3, 4); //1 + 2 +3 = 6
// 利用函数求数组['5','2','99','101','67','77'] 中的最大值 functiongetArrMax(arr) { var max = arr[0]; for (var i = 1; i <= arr.length; i++) { if(arr[i] > max) { max = arr[i]; } } return max; } getArrMax(['5','2','99','101','67','77']); //实参是一个数组送过去 // 在实际开发中,我们经常用一个变量来接收函数的返回结果 var re = getArrMax(['5','2','99','101','67','77']); console.log(re);
// 用伪数组 实现求最大值 functiongetMax() { var max = arguments[0]; for (var i = 1; i < arguments.length; i++) { if (arguments[i] > arguments[0]) { max = arguments[i]; } } return max; } var result = getMax(1,3,77,5,85) colsole.log(result);
案例:利用函数翻转数组
1 2 3 4 5 6 7 8 9 10 11 12
//利用函数翻转任意数组 reverse 翻转 functionreverse(arr) { var newArr = []; for (var i = arr.length - 1; i <= 0; i--) { newArr[newArr.length] = arr[i]; } return newArr; } var arr1 = reverse([1,3,4,6,9]); console.log(arr1); var arr2 = reverse(['red','pink','blue']); console.log(arr2);
案例:利用函数冒泡排序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
// 利用函数冒泡排序 functionsort(arr) { for (var i = 0; i <= arr.length - 1; i++) { for(var j = 0;j <= arr.length - i- 1; j++) { if (arr[j] > arr[j+1]) { var temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } return arr; } var arr1 = sort([1,3,5,7]); console.log(arr1); var arr2 = sort([2,3,5,1,88]); console.log(arr2);
案例:利用函数判断闰年
1 2 3 4 5 6 7 8 9 10 11
// 利用函数判断闰年 functionisRunYear(year) { //如果是闰年返回true,否则返回false var flag = false; if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { flag = true; } return flag; } console.log(isRunYear(2000)); console.log(isRunYear(1999));
函数是可以相互调用的
案例:输出年份的二月份天数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
//用户输入年份,输出该年份二月份的天数 functionbackDay() { var year = prompt('请您输入年份'); if (isRunYear(year)) { // 调用函数需要加小括号 alert('当前年份是闰年2月份有29天'); } else { alert('当前年份是平年2月份有28天'); } } functionisRunYear(year) { //如果是闰年返回true,否则返回false var flag = false; if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { flag = true; } return flag; } backDay();
functionf1() { var num = 123; functionf2() { console.log( num ); } f2(); } var num = 456; f1();//123
作用域链采取就近原则的方式来查找变量最终的值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
var a = 1; functionfn1() { var a = 2; var b = '22'; fn2(); functionfn2() { var a = 3; fn3(); functionfn3() { var a = 4; console.log(a); //a的值 4 console.log(b); //b的值 '22' } } } fn1();