持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第24天
函数
定义
再JS里面,可能会有定义非常多的相同代码或者功能相似的代码,为了满足生产重复的要求,我们可以使用JS中的函数(即封装一段可重复使用的代码块)
- 例子
function getSum(num1,num2){
var sunm = 0;
for (var i = num1; i <= num2; i++){
sum += i;
}
console.log(sum);
}
getSum(1,100);
函数的使用
声明函数
function 函数名(){
函数体;
}
- funnction 声明函数的关键字全部小写
- 函数是做某件事,所以一般为动词
- 函数不调用自己不执行
调用函数
函数名(参数);
函数的参数
形参和实参
- 形参:是声明函数的小括号里面的是形参(形式上的参数)
- 实参:在函数调用的小括号里面的是实参(实际的参数)
function order(food){ //形参是接受实参的 food = '麻婆豆腐' 形参类似于一个变量
console.log(food);
}
order('麻婆豆腐')
- 函数的参数可以有,也可以没有,个数不限
函数新参和实参的匹配问题
function getSum(num1,num2){
console.log(num1,num2);
}
// 1.如果实参的个数和形参的个数一致,就正常输出结果
getSum(1,2); //3
// 2.如果实参的个数多余形参的个数,会取到形参的个数
getSum(1,2,3); //3
// 3.如果实参的个数少余形参的个数, num2 是一个变量但没有接受值,结果就是undefined,整数和undefined返回的结果就是NaN
getSum(1); // NaN
小结
- 函数可以带参数也可以不带
- 声明函数的时候,函数名括号里面的是形参,形参的默认值为undefined
- 调用函数的时候,函数名括号里面的是实参
- 多个参数中间用逗号分隔
- 形参的个数可以与实参个数不匹配,但是结果不可预计,我们尽量匹配
函数的返回值
我们希望函数将结果返回给调用者,此时通过使用return语句就可以实现
- 语法规范
function 函数名(){
return 需要返回结果;
}
函数名();
- 我们的函数只是实现某种方法,最终的结果需要返回给函数的调用者,通过return实现
- 只要函数遇到return就把后面的结果返回给函数的调用者 函数名() = return后面的结果
return注意事项
- return之后的语句不会执行
function getSum(num1,num2){
return num1 + num2;
alert('我是不会执行的')
}
console.log(getSum(1,2));
- return只能返回一个值
function fn(num1,num2){
return num1,num2; //返回结果是最后一个值
}
console.log(fn(1,2));
- 我们求任意两个数,加减乘除的结果
function getResult(num1,num2){
return [num1+num2,num1-num2,num1*num2,num1/num2]
}
var re = getResult(1,2);
console.log(re);
- 函数没有return返回undefined
// 我们函数如果有return则返回的是return后面的值,如果函数没有return则返回undefined
function getResult(){
}
var re = getResult();
console.log(re); //undefined
arguments的使用
当我们不确定有多少个参数传递时,可以用arguments来获取。在Javascript中,arguments实际上它是当前函数的一个内置对象。所有函数都内置一个arguments对象,arguments对象中存储了传递的所有实参
function fn(){
console.log(arguments); //里面存储了所有传递过来的实参
}
fn(1,2,3)
arguments展示形式是一个为数组,因此可以进行遍历,伪数组具有以下特点:
- 具有length属性
- 按索引方式存储数据
- 不具有数组的push,pop等方式
函数相互调用
函数时可以互相调用的
function fn1(){
console.log(11);
fn2(); //在fn1函数里面调用了fn2
}
fn1();
function fn2(){
console.log(22);
}
函数的两种声明方式
- 利用函数关键字自定义函数
function 函数名(){
函数体;
}
- 函数表达式(匿名函数)
var 变量名 = function(){}
//来个例子
var hi = function(){
console.log('hi');
}
hi();
- hi不是函数名而是变量名
- 函数表达式声明方式跟声明变量差不多,只不过变量里面存储的是值,而函数表达式里面存放的是函数
- 函数表达式也可以传递参数