创建函数
创建函数的两种方式:
var a=function(){
//函数表达式
}
function(){
//函数声明
}
参数类型
function add(a,b){ //a,b为形参
return a+b;
}
console.log(add(1,2)); //1,2为实参
参数传递
-
如果是基本数据类型:把数据复制一份,传递给形参。
-
如果是引用数据类型:把数据复制一份,传递给形参。传递是堆区的地址
函数的参数是另一个函数
<script>
function add(a, b) {
return a + b;
}
function sub(a, b) {
return a - b;
}
function compute(f, x, y) {
return f(x, y);
}
console.log(compute(add, 1, 2)); //3
console.log(compute(sub, 1, 2)); //-1
</script>
arguments对象
arguments对象是所有(非箭头)函数中都可用的局部变量。你可以使用arguments对象在函数中引用函数的参数。
<script>
function f() {
console.log(arguments);
}
f(1,2,3);
</script>

ES6中的函数
函数默认值
ES6 允许为函数的参数设置默认值,即直接写在参数定义的后面
function f(形参名1=默认值1,形参名2=默认值2) { }


rest参数
ES6 引入 rest 参数,它是在定义函数时使用,作用是接受剩余的参数。

- rest是一个数组
- rest只是一个变量名,可以用别的值代替
- 必须是最后一个形参
当"..."出现在函数调用中的时候,此时"..."的作用为:将一个数组转为用逗号分隔的参数序列。
此时"..."是扩展运算符

箭头函数
定义一个箭头函数很简单,基本语法是:
(参数) => {
//函数体
}
- 特点1:只有一个形参时,()可不写
- 特点2:只有一个带return语句, {} 和 return 都可以不写
- 特点3:只有一个不带return语句,{} 可以不写
- 特点4:如果返回对象,把{} 和 return 省掉的话,需要给这个对象加()
在箭头函数中没有arguments和this,可以使用rest参数