函数
- 函数:就是封装了一段可被重复调用执行的代码块。通过此代码块可以实现大量代码的重复使用。
函数在使用时分为两步:声明函数和调用函数。
// 声明函数
function 函数名() {
//函数体代码
}
// 调用函数
函数名(); // 通过调用函数名来执行函数体代码 函数不调用,自己不执行。
- 函数的封装是把一个或者多个功能通过函数的方式封装起来,对外只提供一个简单的函数接口
// 利用函数计算1-100之间的累加和
function getSum(){
var sum = 0;
for(var i = 1; i<=100; i++){
sum +=i;
}
console.log(sum);
}
getSum();
函数的形参和实参
- 在声明函数时,可以在函数名称后面的小括号中添加一些参数,这些参数被称为形参,而在调用该函数时,同样也需要传递相应的参数,这些参数被称为实参。
- 参数的作用 : 在函数内部某些值不能固定,我们可以通过参数在调用函数时传递不同的值进去。
// 带参数的函数声明
function 函数名(形参1, 形参2 , 形参3...) { // 可以定义任意多的参数,用逗号分隔
// 函数体
}
// 带参数的函数调用
函数名(实参1, 实参2, 实参3...);
// 3. 形参和实参的执行过程
function cook(aru) { // 形参是接受实参的 aru = '酸辣土豆丝' 形参类似于一个变量
console.log(aru);
}
cook('酸辣土豆丝');
cook('大肘子');
// 4. 函数的参数可以有,也可以没有个数不限
// 1.利用函数求任意两个数的和
function getSum(num1, num2) {
var sum = num1 + num2;
console.log(sum);
}
getSum(1,2);
// 2. 利用函数求任意两个数之间的和
function getSum(num1, num2){
var sum = 0;
for(var i = num1; i<=num2; i++){
sum +=i;
}
console.log(sum);
}
getSum(1,3);
// 3. 注意点
// (1) 多个参数之间用逗号隔开
// (2) **** 形参可以看做是不用声明的变量 ****
注意:在JavaScript中,形参的默认值是undefined。
函数的返回值 return
有的时候,我们会希望函数将值返回给调用者,此时通过使用 return 语句就可以实现。
// 声明函数
function 函数名(){
...
return 需要返回的值;
}
// 调用函数
函数名(); // 此时调用函数就可以得到函数体内return 后面的值
在使用 return 语句时,函数会停止执行,并返回指定的值
如果函数没有 return ,返回的值是 undefined
function getSum(num1, num2) {
return num1 + num2;
}
console.log(getSum(1, 2));
// 利用函数 求两个数的最大值
function getMax(num1, num2){
return num1>num2?num1:num2;
}
console.log(getMax(1,2));
// 利用函数求数组 [5,2,99,101,67,77] 中的最大数值。
function getArrMax(arr){
var max = arr[0];
for(var i = 1; i<=arr.length-1; i++){
if(arr[i]>max){
max = arr [i];
}
}
return max;
}
// 在我们实际开发里面,我们经常用一个变量来接受 函数的返回结果 使用更简单
var re = getArrMax( [5,2,99,101,67,77]);
console.log(re);
// 函数返回值注意事项
// 1. return 终止函数
function getSum(num1, num2) {
return num1 + num2; // return 后面的代码不会被执行
alert('我是不会被执行的哦!')
}
console.log(getSum(1, 2));
// 2. return 只能返回一个值
function fn(num1, num2) {
return num1, num2; // 返回的结果是最后一个值
}
console.log(fn(1, 2));
// 3. 我们求任意两个数的 加减乘数结果
function getResult(num1, num2) {
return [num1 + num2, num1 - num2, num1 * num2, num1 / num2];
}
var re = getResult(1, 2); // 返回的是一个数组
console.log(re);
// 4. 我们的函数如果有return 则返回的是 return 后面的值,如果函数么有 return 则返回undefined
function fun1() {
return 666;
}
console.log(fun1()); // 返回 666
function fun2() {
}
console.log(fun2()); // 函数返回的结果是 undefined
// 创建一个函数,实现两个数之间的加减乘除运算,并将结果返回
function operator(num1, num2){
var arr = [num1+num2, num1-num2, num1*num2, num1/num2];
return arr;
}
var re = operator(1,2);
console.log(re);
break ,continue ,return 的区别
- break :结束当前的循环体(如 for、while)
- continue :跳出本次循环,继续执行下次循环(如 for、while)
- return :不仅可以退出循环,还能够返回 return 语句中的值,同时还可以结束当前的函数体内的代码
arguments的使用
- 当我们不确定有多少个参数传递的时候,可以用 arguments 来获取。在 JavaScript 中,arguments 实际上
它是当前函数的一个内置对象。所有函数都内置了一个 arguments 对象,arguments 对象中存储了传递的
所有实参。 - arguments展示形式是一个伪数组,因此可以进行遍历。伪数组具有以下特点:具有 length 属性, 按索引方式储存数据, 不具有数组的 push , pop 等方法
// arguments 的使用 只有函数才有 arguments对象 而且是每个函数都内置好了这个arguments
function fn() {
// console.log(arguments); // 里面存储了所有传递过来的实参 arguments = [1,2,3]
// console.log(arguments.length);
// console.log(arguments[2]);
// 我们可以按照数组的方式遍历arguments
for (var i = 0; i < arguments.length; i++) {
console.log(arguments[i]);
}
}
fn(1, 2, 3);
fn(1, 2, 3, 4, 5);
// 伪数组 并不是真正意义上的数组
// 1. 具有数组的 length 属性
// 2. 按照索引的方式进行存储的
// 3. 它没有真正数组的一些方法 pop() push() 等等
//案例:利用函数求任意个数的最大值
function maxValue() {
var max = arguments[0];
for (var i = 0; i < arguments.length; i++) {
if (max < arguments[i]) {
max = arguments[i];
}
}
return max;
}
console.log(maxValue(2, 4, 5, 9));
console.log(maxValue(12, 4, 9));