一.字符串
字符串可以被for…of循环遍历。
// for(let item of "pengchb"){
// console.log(item)
// }
二.函数的扩展
1.函数参数的默认值
ES6 允许为函数的参数设置默认值,即直接写在参数定义的后面
function log(x, y = 'World') {
console.log(x, y);
}
log('Hello') // Hello World
log('Hello', 'China') // Hello China
log('Hello', '') // Hello
log(undefined, 'y值') // undefined "y值"
log("", 'y值') // "y值"
2.函数的 length 属性
指定了默认值后,length属性将失真。
(function (a) {}).length // 1
(function (a = 5) {}).length // 0
(function (a, b, c = 5) {}).length // 2
3.箭头函数
let fun = (a,b) => a+b ;
console.log(fun(1,2))
let fun2 = (a,b) => {return a+b };
console.log(fun2(1,2))
let fun3 = (a,b) =>{ return {x:a,y:b}};
console.log(fun3(1,2))
箭头函数有几个使用注意点。
(1)函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。
(2)不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。
(3)不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用 rest 参数代替。
(4)不可以使用yield命令,因此箭头函数不能用作 Generator 函数。
上面四点中,第一点尤其值得注意。this对象的指向是可变的,但是在箭头函数中,它是固定的。
function foo() {
setTimeout(() => {
console.log('id:', this.id);
}, 100);
}
var id = 21;
foo.call({ id: 42 });
// id: 42
function foo(){
setTimeout(function(){
console.log(id)
},100)
}
var id = 10;
foo.call({ id : 1000})