您的位置:首页 > 其它

[ES6] 字符串、正则、数值、函数、数组、对象的扩展

2019-01-25 19:57 295 查看

一.字符串

字符串可以被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})
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐