函数参数的扩展
1.默认参数
function fn(a, b = 10) {
console.log(a, b)
}
fn(10) //10 10
只有在未传递参数,或者参数为 undefined 时,才会使用默认参数,null 值被认为是有效的值传递。
function fn(a, b = 10, c = 10) {
console.log(a, b, c)
}
fn(10, undefined, null) //10 10 null
函数参数默认值存在暂时性死区,在函数参数默认值表达式中,还未初始化赋值的参数值无法作为其他参数的默认值。
function f(x,y=x){
console.log(x,y);
}
f(1); // 1 1
function f(x=y){
console.log(x);
}
f(); // ReferenceError: y is not defined
2. 不定参数用来表示不确定参数个数,形如,...变量名,由...加上一个具名参数标识符组成。具名参数只能放在参数组的最后,并且有且只有一个不定参数。
function f(...values){
console.log(values.length); //values为一个纯数组
}
f(1,2); //2
f(1,2,3,4); //4
箭头函数
var f = a => a
// 等价于
var f = function (a) {
return a
}
当箭头函数没有参数或者有多个参数,要用 () 括起来。
//没有参数
var f = () => {
console.log('我是箭头函数')
}
// 等价于
var f = function () {
console.log('我是箭头函数')
}
//两个及两个以上的参数
var f = (a, b) => {
console.log('我是箭头函数')
}
// 等价于
var f = function (a, b) {
console.log('我是箭头函数')
}
当箭头函数函数体有多行语句,用 {} 包裹起来,表示代码块,当只有一行语句,并且需要返回结果时,可以省略 {} , 结果会自动返回。
var f = a => a
// 等价于
var f = function (a) {
return a
}
当箭头函数要返回对象的时候,为了区分于代码块,要用 () 将对象包裹起来
// 报错
var f = (id,name) => {id: id, name: name};
f(6,2); // SyntaxError: Unexpected token :
// 不报错
var f = (id,name) => ({id: id, name: name});
f(6,2); // {id: 6, name: 2}
箭头函数不存在this,他的this是他的上下文,也就是父级的this,若是父级也是箭头函数,那么继续向上找,直到找到最外层window









网友评论