1.函数定义
函数定义是 Function
类型的实例。
1.1函数声明
function 函数名(值形参名, 默认值形参名 = 默认值, ...数组形参名) {
//函数体
}
1.2函数表达式
注意:命名函数表达式的右侧依然是函数表达式,不是函数声明。
//命名函数表达式
let f = function f2(形参名) {
//函数体
};
//匿名函数表达式
let f = function (形参名) {
//函数体
};
注意:命名函数表达式的函数名 f2
的作用域仅仅为函数体,比如可用于函数递归,但不可以在函数体外使用。
const f = function f2() {
return 1;
};
console.log(f()); // 1
console.log(f2()); // 报错
1.3箭头函数表达式
没有形参或多个形参时必须使用圆括号 ()
,只有一个值形参时可以省略圆括号 ()
,只有一个默认值形参或者只有一个剩余形参时不可以省略圆括号 ()
。
如果有花括号 {}
,则花括号 {}
内就跟普通函数一样。
如果没有花括号 {}
,则胖箭头 =>
后面就只可以为单个表达式。因为 return
关键字只可以被用在函数体内,此时不可以使用 return
关键字。而且,箭头函数会隐式地将此单个表达式的值返回给此箭头函数的调用者。 另外,如果表达式为一个对象字面量,则需要将此对象字面量放在一对圆括号 ()
中,以避免解释器分不清花括号到底是函数体的花括号还是对象字面量的花括号。
let f = (形参名) => {
//函数体
};
2.函数作用域
//全局函数
function f() {
}
function f1() {
//局部函数
function f2() {
}
}
3.函数引用表达式
函数名;
4.形参分类
注意:在函数体调用数组形参时,数组形参名的前面无 ...
。
名称 | 描述 |
值形参 | 按位置传递 |
默认值形参 | 按位置传递 |
... 数组形参 | 用于收集多余的位置实参 |
5.函数调用表达式
函数名();
实参的传递只支持按位置传递方式,不支持按命名传递方式(可以使用对象字面量解构赋值模拟)。
注意:不给值形参传递值,相当于给值形参传递了 undefined
值。不给剩余形参传递值,相当于给剩余形参传递了空数组。
注意:给默认值形参不传递或传递 undefined
值,都会触发默认值形参的默认值。给默认值形参传递 null
值,不会触发默认值形参的默认值。
//按位置传递方式
函数名(实参);
6.返回值
参考 return
语句。
原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/javascript/javascriptlang/4731.html