一、箭头表达式
用来声明匿名函数,消除传统匿名函数的this指针问题
//写法示例
var sum = (arg1, arg2) => arg1 + arg2
//无参数的箭头表达式
var sum1 = () => {}
//只有一个参数的箭头表达式
var sum2 = arg1 => {
console.log(arg1)
}
应用场景:
var myArray = [1, 2, 3, 4, 5]
//过滤掉单数
console.log(myArray.filter(value=>value%2==0))
解决传统函数中this指向的问题:
传统函数:
function getStock(name: string) {
this.name = name;
setInterval(function () {//传统函数
console.log(this.name)
},1000)
}
var stock = new getStock("IBM");
执行结果:
箭头函数
function getStock2(name: string) {
this.name = name;
setInterval(()=> {//箭头函数
console.log(this.name)
},1000)
}
var stock2 = new getStock2("IBM");
执行结果:
二、forEach(),for in 和 for of
1、forEach
不可打破循环,break关键字在forEach中不支持;
会忽略掉属性值;
var myArr = [1, 2, 3, 4]
myArr.desc = "four number"
myArr.forEach(value=>console.log(value))
执行结果:desc属性被忽略了
2、for in
循环获取到的是数组的下标或数组的属性名称;
循环过程可以被break掉;
不会忽略掉属性;
var myArr = [1, 2, 3, 4]
myArr.desc = "four number"
for (var n in myArr) {
console.log(n);
}
如果想打印数组的值得话,可以用这种方式:
var myArr = [1, 2, 3, 4]
myArr.desc = "four number"
for (var n in myArr) {
console.log(myArr[n]);
}
3、for of
循环获取到的是属性值而不是下标;
循环过程可以被break掉;
忽略掉属性;
var myArr = [1, 2, 3, 4]
myArr.desc = "four number"
for (var n of myArr) {
if (n > 2) break;
console.log(n);
}
for of循环可以用在对象、集合(map、set)、字符串上
for (var n of "four number") {
console.log(n);
}