参数默认值
函数参数是从左到右解析,如果没有默认值会被解析成 undefined
javascript
function test(x, y = 'world') {
console.log('默认值', x, y)
// 默认值 hello world
// 默认值 hello wuchendi
}
test('hello')
test('hello', 'wuchendi')
参数默认赋值具体的数值
javascript
let x = 'test'
// function test2(x, y = x) {
// console.log("作用域", x, y);
// }
function test2(c, y = x) {
console.log('作用域', x, y) // 作用域 test test
}
// test2();
test2('kill')
Rest 参数
javascript
function test3(...arg) {
for (let v of arg) {
console.log('rest', v)
// rest 1
// rest 2
// rest 3
// rest 4
// rest a
}
}
test3(1, 2, 3, 4, 'a')
扩展运算符
javascript
console.log(...[1, 2, 4]) // 1 2 4
console.log('a', ...[1, 2, 4]) // a 1 2 4
箭头函数
javascript
let arrow = (v) => v * 2
console.log('arrow', arrow(3)) // arrow 6
let arrow2 = () => 5
console.log('arrow2', arrow2()) // arrow 5
扩展
javascript
function tail(x) {
console.log('tail', x) // tail 123
}
function fx(x) {
return tail(x)
}
fx(123)
箭头函数和普通函数的区别
- 箭头函数和普通函数的样式不同,箭头函数语法更加简洁、清晰,箭头函数是=>定义函数,普通函数是function定义函数。
- 箭头函数会捕获其所在上下文的 this 值,作为自己的 this 值,定义的时候就确定并固定了。
- 箭头函数不能作为构造函数使用,也不能使用new关键字(因为箭头函数没有自己的this,它的this其实是继承了外层执行环境中的this,且this指向永远不会改变,作为构造函数其的this要是指向创建的新对象)。
- 箭头函数没有自己的arguments。在箭头函数中访问arguments实际上获得的是外层局部(函数)执行环境中的值。
- call、apply、bind 并不会影响其 this 的指向。
- 箭头函数没有原型prototype。
- 箭头函数不能当作 Generator 函数,不能使用 yield 关键字。