JavaScript基础学习 函数与return、arguments
<!DOCTYPE html>
<html>
<head>
<title>js开始学习</title>
<script>
function getSum(num1, num2) {
console.log(num1 + num2);
}
// 实参少于形参时,多的形参会定义为undefined
// 实参多于形参时,只会取到对应的形参个数
getSum(1, 2); //3
getSum(1, 2, 3); //3
getSum(1); //NaN
console.log('--------------------------');
function getMax(num1, num2) {
if (num1 > num2) {
return num1;
} else {
return num2;
}
}
console.log(getMax(10, 20));
console.log('--------------------------');
function getArrMax(arr) {
var max = arr[0];
for (var i = 1; i <= arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
var re = getArrMax([10, 20, 40, 9, 8, 56, 99]);
console.log(re);
console.log('--------------------------');
// return 一般不能返回多个值,但可以通过数组来返回多个值 return具有终止函数的作用
function retrunMulti(num1, num2) {
return [num1 + num2, num1 - num2, num1 * num2];
alert('这句话是不会被执行的!!!');
}
var result = retrunMulti(10, 5);
console.log(result);
console.log('--------------------------');
//函数当中如果有return,则有返回值,如果函数当中没有return时,则返回undefined
function testOne() {
return 666;
}
function testTwo() {
}
console.log(testOne()); // 666
console.log(testTwo()); // undefined
</script>
</head>
<body>
</body>
</html>
函数案例之实现数组翻转、冒泡排序、判断闰年
<!DOCTYPE html>
<html>
<head>
<title>js开始学习</title>
<script>
// 函数实现数组翻转
function flip() {
var temp = 0;
if (arguments.length % 2 == 0) {
for (var i = 0; i < arguments.length / 2; i++) {
temp = arguments[arguments.length - 1 - i];
arguments[arguments.length - 1 - i] = arguments[i];
arguments[i] = temp;
}
return arguments;
} else {
for (var i = 0; i < (arguments.length - 1) / 2; i++) {
temp = arguments[arguments.length - 1 - i];
arguments[arguments.length - 1 - i] = arguments[i];
arguments[i] = temp;
}
return arguments;
}
}
console.log(flip(1, 2, 3, 4, 5));
console.log(flip(1, 2, 3, 4, 5, 6));
console.log(flip(1, 2, 3, 4, 5, 6, 10, 90, 17, 98));
console.log('---------------------------------------------------------');
// 函数实现数组翻转二
function reverse(arr) {
var newArr = [];
for (var i = arr.length - 1; i >= 0; i--) {
newArr[newArr.length] = arr[i];
}
return newArr;
}
var result = reverse([1, 2, 3, 4, 5]);
console.log(result);
console.log('---------------------------------------------------------');
//函数实现冒泡排序
function bubble(arr) {
var temp = 0;
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]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return arr;
}
var result = bubble([23, 3, 46, 5, 6]);
console.log(result);
console.log('---------------------------------------------------------');
//函数判断闰年的案例
function judge(year) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
return year + '年是闰年';
} else {
return year + '年不是闰年';
}
}
console.log(judge(2010));
</script>
</head>
<body>
</body>
</html>
arguments
arguments的作用:当我们函数不确定形参的具体个数时,我们可以使用arguments
<!DOCTYPE html>
<html>
<head>
<title>js开始学习</title>
<script>
// arguments的使用 只有函数才有arguments对象 而且每个函数都内置好了这个arguments
function fn() {
console.log(arguments);
console.log(arguments.length);
console.log(arguments[2]);
//可以按照数组的方式遍历arguments
for (var i = 0; i < arguments.length; i++) {
console.log(arguments[i]);
}
}
fn(1, 2, 35);
//伪数组 并不是真正意义上的数组
// 1. 具有数组的length属性
// 2.按照索引的方式进行存储的
//3.没有真正数组的一些方法 pop()push()等等
</script>
</head>
<body>
</body>
</html>
arguments案例
<!DOCTYPE html>
<html>
<head>
<title>js开始学习</title>
<script>
function getMax() {
var max = arguments[0];
for (var i = 1; i < arguments.length; i++) {
if (arguments[i] > max) {
max = arguments[i];
}
}
return max;
}
console.log(getMax(1, 3, 4, 5, 8)); //8
console.log(getMax(1, 3, 10, )); //10
console.log(getMax(18, 3, 4, 5, 8, 99, 100, 909)); //909
</head>
<body>
</body>
</html>
函数嵌套
<!DOCTYPE html>
<html>
<head>
<title>js开始学习</title>
<script>
function getYear() {
var year = prompt('请你输入年份:');
return sort(parseInt(year));
}
function sort(year) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
return year + '年2月份有29天';
} else {
return year + '年2月份有28天';
}
}
var result = getYear();
alert(result);
</script>
</head>
<body>
</body>
</html>