07函数拓展-es6
# 函数拓展
//形参默认值
function fn(a=1){
console.log(a)
}
fn(2)
///与解构赋值一起用
function fn({name}){
console.log(name)
}
fn({name:"小明"})
//和扩展预算符一起使用
function fn(a,...b){
console.log(a)//1
console.log(b)//[2, 3, 4, 5]
}
fn(1,2,3,4,5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
%accordion% 练习 %accordion%
//形参默认值
function fn(a,b=1){
console.log(a+b)
}
fn(1) //2
1
2
3
4
5
2
3
4
5
%/accordion%
# 箭头函数
# 1、单行的时候可以不加大括号
let fn = ()=> console.log("hello world")
console.log()
1
2
2
# 2、单行使用的时候可以直接返回值,不需要加return
let fn = ()=> "hello world"
console.log(fn())
1
2
2
# 3、无参数写法
//没有参数的时候可以使用括号也可以使用下划线
let fn = _ => "hello world"
console.log(fn())
1
2
3
2
3
%accordion% 练习 %accordion%
//有参数
let fn = () => 1
console.log(fn()); //1
// 无参数
let fn = _ => 1
console.log(fn());//1
1
2
3
4
5
6
7
2
3
4
5
6
7
%/accordion%
# 4、绑定this指针
//使用箭头函数的时候,无法修改this指针
function fn(){
console.log(this)//obj
}
let fn = ()=>{
console.log(this)//window
}
let obj = {
name:"小明"
}
fn.call(obj)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
%accordion% 练习 %accordion%
let obj = { name: "张三" }
function fn() {
console.log(this);
}
fn.call(obj)//{name: "张三"}
let obj = { name: "张三" }
let fn = () => {
console.log(this);
//Window {parent: Window, opener: null, top: Window, length: 0, frames: Window, …}
}
fn.call(obj)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
%/accordion%
# 5、无法当成构造函数使用
let Person = ()=>{
}
new Person()//报错
1
2
3
4
2
3
4
# 6、箭头函数没有arguments
let Person = ()=>{
console.log(arguments)//报错
}
Person()
1
2
3
4
2
3
4
%accordion% 练习 %accordion%
// 错误法
let fn = (name) => {
this.name = name
}
let f = new fn("张三")
console.log(f);
let fn = () => {
console.log(arguments);
}
fn(1, 2, 3)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
%/accordion%
编辑 (opens new window)
上次更新: 2022/04/24, 13:33:34