1. 定义
声明函数:function 函数名( 形式参数 ) { 代码块 }。
形式参数可以是多个参数,也可不填。每调用一次函数,代码块从头运行一次,用来实现代码的复用。
箭头函数声明:
fn = (a, b)=> {
sum = a + b;
console.log(sum);
return sum;
};
fn(6, 20); //运行结果:26
总结:箭头函数和普通函数的区别?
箭头函数:没有this;匿名函数,没有提升;不能当成构造函数(不能new);不可以使用arguments对象,如果要用,可以用rest参数代替
普通函数:有this环境;预编译时会提升;能当成构造函数使用
2. 函数的调用:函数名(实际参数)
1. 没有参数时,直接调用即可;
2. 调用时参数传少了,程序正常运行,但结果可能是设定之外的。
例:
function fn(a,b){
var sum = a + b;
console.log(sum);
}
fn(2); // 打印NaN
解决办法:设定默认值
可以利用if语句来设定:
function fn(a,b) {
if(a==undefined) { a=0 };
if(b==undefined) { b=0 };
sum = a+b }
fn(10); //结果:sum = 10+0 = 10
fn(2,30,5); //结果:sum = 2+30 = 32
//fn(实参arguments)
或者直接给形参设置默认值:
function fn(a = 0,b = 0) { sum = a+b }
fn(10);
3. 调用时参数传多了,传多的参数保存在函数的arguments类数组中,但不使用。但影响性能。案例见上。
3. 返回值
函数调用完一定会有一个return返回值。return不写时,默认函数结束后返回undifined;如果设置了,那就返回设定的值。
函数内部遇到return时,函数就结束运行,那么return后面的代码就不会再运行了。
案例:
function fn(a, b) {
sum = a + b;
console.log(sum);
return sum;
console.log("222");
}
fn(6,20); //运行结果:26 不打印222
与函数相关的,官方提供的关键字:function 声明函数;fn.length 函数的形参个数;arguments 实参数组;return 函数返回值;this 表示代码运行时,是哪个对象让它运行的。
4. this
表示代码运行时,是哪个对象让它运行的。
案例见后面文章。
任何函数调用都有对象在调用,默认为window,也就是说fn()是window.fn()的简写。