一、函数两种命名:
1.函数关键字定义
function(){
函数体;
}
console.log(function());
2.函数表达式命名
var fun=function(){
函数体;
}
console.log(fun ());
二者区别:1.fun是变量名,不是函数名;
2.函数表达式命名和声明变量类似,区别在于该变量存放的是函数
3.函数表达式也可以进行传参
二、函数案例
1.求两个数中最大的一个
function getMax(num1, num2) {
var max = num1 > num2 ? num1 : num2;
return max;
}
var num1 = prompt('请输入运算的第1个数:');
var num2 = prompt('请输入运算的第2个数:');
var ret = getMax(num1, num2);
console.log(ret);
2.求3个数中最大的一个 如输入10,12,11
function getMax(arr) {
var max = arr[0];
for (var i = 0; i < arr.length; i++) {
if (max < arr[i]) {
max = arr[i];
}
}
return max;
}
var arr = [];
arr[0] = prompt('请输入运算的第1个数:');
arr[1] = prompt('请输入运算的第2个数:');
arr[2] = prompt('请输入运算的第3个数:');
ret = getMax(arr);
console.log(ret);
3.判断素数
function getSu(num) {
for (var i = 2; i < num / 2; i++) {
if (num % i == 0) {
break;
}
}
if (i >= num / 2) {
return (num + '是素数');
}
else {
return (num + '不是素数');
}
}
var num = prompt('请输入需要判断的数:');
var ret = getSu(num);
console.log(ret);
4.输入任意两数和任意两字符,进行简单计算器运算
function calculate(arr) {
var num1 = arr[0];
var fu = arr[1];
var num2 = arr[2];
var ret;
if (arr[1] == '+') {
ret = parseInt(num1) + parseInt(num2);
}
if (arr[1] == '-') {
ret = num1 - num2;
}
if (arr[1] == '*') {
ret = num1 * num2;
}
if (arr[1] == '/') {
ret = num1 / num2;
}
return (num1 + fu + num2 + '=' + ret);
}
var arr = [];
arr[0] = prompt('请输入运算的第1个数:');
arr[1] = prompt('请输入运算符:');
arr[2] = prompt('请输入运算的第2个数:');
ret = calculate(arr);
console.log(ret);
要注意,进行加运算要转换类型,不然就会出现下列错误:
正确如下:
三、关于arguments
arguments存放了传过来的所有实参,是以伪数组的形式来展示的,每个函数都内置了该对象,它有:
1.具有数组length的特性,
2.按照索引的方式存储的;
3.它没有真正数组的一些方法如pop,push等。下面是运用arguments的一些例子:
例子1:求任意长度数组的最大值
function getMax() {
var max = arguments[0];
for (var i = 0; i < arguments.length; i++) {
if (max < arguments[i]) {
max = arguments[i];
}
}
return max;
}
console.log(getMax(1, 2, 3));
console.log(getMax(1, 7, 4, 6, 3));
console.log(getMax(2, 1, 8, 6, 7, 10));
例子2:函数实现数组反转
function reverse(arr) {
for (var i = 0; i < arr.length / 2; i++) {
var temp = arr[i];
arr[i] = arr[arr.length - 1 - i];
arr[arr.length - 1 - i] = temp;
}
return (arr);
}
arr1 = [1, 2, 3, 4, 5];
arr2 = [5, 2, 3, 9];
console.log(reverse(arr1));
console.log(reverse(arr2));
例子3:函数实现冒泡排序,以升序为例
function sort(arr) {
for (var i = 0; i < arr.length-1; i++) {
var max = arr[i];
for (var j = i; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return (arr);
}
arr1 = [7, 2, 5, 8, 9];
arr2 = [5, 1, 3, 6, 8, 10];
console.log(sort(arr1));
console.log(sort(arr2));
例子4:函数实现判断闰年
function isRunYear(year) {
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
return (year + '是闰年');
}
else {
return (year + '不是闰年');
}
}
console.log(isRunYear(2000));
console.log(isRunYear(2001));