es6中对于函数的扩展--常用
1、函数参数可以解构传参(rest) 语法: ...value 参数对应的是数组
function add(...values) {
let sum = 0;
for (var val of values) {
sum += val;
}
return sum;
}
add(2, 5, 3) // 10
2、函数参数允许使用默认值
带默认值的参数应该是尾参,放在参数列表最后
函数增加了length属性,返回有默认值参数之前的参数个数;
设置了默认参数的函数,其参数会形成一个单独的作用域
3、不可在函数内部声明严格模式
只要函数参数使用了默认值、解构赋值、或者扩展运算符,那么函数内部就不能显式设定为严格模式,否则会报错。
5、箭头函数
箭头函数的this指向
// ES6
function foo() {
setTimeout(() => {
console.log('id:', this.id);
}, 100);
}
// ES5
function foo() {
var _this = this;
setTimeout(function () {
console.log('id:', _this.id);
}, 100);
}
使用注意事项:
如果箭头函数的代码块部分多于一条语句,就要使用大括号将它们括起来,并且使用return语句返回。
如果返回对象,需要在对象外包一层括号,箭头函数将{}视为代码块
函数内this指向定义是对象,而非运行时对象
不可作为构造函数 6、name属性
var f = function () {};
// ES5
f.name // ""
// ES6
f.name // "f"
7、双冒号运算符
对象::函数 该运算符会自动将左边的对象,作为上下文环境(即this对象),绑定到右边的函数上面。
::obj.fn() 将该函数的this指向变为obj
如执行结果仍未对象,可以采用链式调用