函数
在JS里,可能会定义许多相同的代码,这些代码可能要多次重复使用,此时就需要封装成函数
函数 : 就是封装了一段可被重复调用执行的代码块,通过此代码块就实现代码的重复使用
<script>
function getSum(num1, num2) {
var sum = 0;
for (var i = num1; i <= num2; i++) {
sum += i;
}
console.log(sum);
}
getSum(1, 100);
</script>
函数使用时分为两步:声明函数和调用函数
<script>
//声明函数
function 函数名() {
函数体代码;
}
</script>
function是声明函数关键字,必须小写
函数名通常命名为动词
// 调用函数
函数名();
函数的封装是把一个或者多个功能通过函数的方式封装起来,对外值提供一个简单的函数接口
就相当于把配件装到机箱里
参数
<script>
//形参是接受实参的,并不知道是什么
//在函数的内部某项数值不能固定,可以通过参数传递不同的值进去
function 函数名(形参1, 形参2) {
函数体代码;
}
// 实参是传递进参数的
函数名(实参1, 实参2);
</script>
参数个数的影响
<script>
//求任意两个数之间的和
function getSums(start, end) {
var sum = 0;
for (var i = start; i <= end; i++) {
sum += i;
}
console.log(sum);
}
// 如果形参的个数等于实参的个数,正常输出
getSums(1, 100);
// 如果形参的个数大于实参的个数,会取到形参的个数
getSums(1, 10, 100);
// 如果形参的个数小于实参的个数,另一个变量可以看做没有接受值
getSums(1);
// 多个参数之间用逗号隔开
// 形参可以看做是不用声明的变量
</script>
return返回值
<script>
function 函数名() {
return 返回的结果;
}
//函数只是实现功能,最终的结果需要返回给函数的调用者
// 函数名() 通过return实现的,只要函数遇到return,
// 就把后面的结果返回给函数的调用者
// 函数名()=return后面的结果
函数名();
</script>
验证
<script>
function getResult() {
return 111;
}
console.log(getResult());
</script>
<script>
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 arr1 = [1, 2, 3, 66, 77];
//传递一个数组
console.log(getArrMax(arr1));
</script>
<script>
function ooo() {
return 1111;
//return后的代码都不执行,它是终止函数
console.log('不执行我');
}
console.log(ooo());
</script>
<script>
function fn() {
//只能返回一个值
// 返回最后一个值
return 1, 2;
}
console.log(fn());
</script>
<script>
function re() {}
// 如果没返回值,输出的是undefined
console.log(re());
</script>
arguments
如果不确定有多少个参数,可以用arguments来获取参数
<script>
function fn() {
// arguments是一个伪数组
console.log(arguments); //里面存储了所有传递的实参
// arguments具有length属性
console.log(arguments.length);
console.log(arguments[2]);
// 可以循环遍历
for (var i = 0; i < arguments.length; i++) {
console.log(arguments[i]);
}
}
fn(1, 2, 3);
fn(2, 3, 5, 7);
</script>
<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));
console.log(getMax(1, 3, 2, 4, 7));
console.log(getMax(1, 3, 2, 6, 4, 5));
</script>
<script>
// 函数里可以相互调用
function fn1() {
console.log(11111);
fn2();
}
function fn2() {
console.log('fn2');
}
fn1();
</script>
匿名函数
<script>
var fun1 = function(canshu) {
console.log('这里是匿名函数');
console.log(canshu);
}
fun1('这里是传进来的参数');
// fun1是变量名,不是函数名
// 也可以进行传参
// 函数表达式声明方式跟声明变量差不多,只不过
//变量里存的是值,而函数表达式里存的是函数
</script>