1 参数默认值
function foo(x, z, y = 5) {
console.log(x, y, z); //1 5 3
}
foo(1, 3);
2 与解构赋值结合
function foo({ x, y = 5 }) {
console.log(x, y); //1 6
}
foo({ x: 1, y: 6 });
function ajax(url, {
body = '',
method = 'GET',
headers = {}
} = {}) {
console.log(url) // baidu.com
console.log(method) // POST
}
ajax('baidu.com', {
method: 'POST'
})
3 length属性长度 (指函数没有指定默认参数值的个数)
function foo(x, y) {
console.log(x, y) //2
}
console.log(foo.length); // 指函数没有指定默认参数值的个数
function foo1(x = 1, y = 2) {
console.log(x, y) //0
}
console.log(foo1.length); // 指函数没有指定默认参数值的个数
4 参数作用域 (可以把形参看成一个局部作用域)
let x = 1;
function foo(x, y = x) {
console.log(y) //2
}
foo(2)
function foo(y = x) {
let x = 1;
console.log(y) //1
}
foo()
function foo(y = x) { // ReferenceError: x is not defined
let x = 2;
console.log(y)
}
foo()
5 bind (改变this指向)
function foo() {
console.log(this); //name: "kiw"}
}
foo.bind({
name: 'kiw',
})()
6 name属性
function foo(x, y) {
console.log(this, x, y);
}
console.log(foo.name) // foo
console.log(foo.bind({}).name) //bound foo
网友评论