小窥TypeScript: =>表达式

在TypeScript中添加了箭头表达式,和java的lambda很相似。

var sum = () => (1 + 5);
var sum = (arg1, arg2) => (arg1 + arg2);
var func1 = arg => { console.log(arg); }

以上代码相当于js的:

var sum = function () { return (1 + 5); };
var sum = function (arg1, arg2) { return (arg1 + arg2); };
var func1 = function (arg) { console.log(arg); };

可以看出,当参数为1个时,可以省略(),当返回值仅一行代码的时候,我们可以省略{},当仅使用()括住返回值的时候,默认为return方式。

一个实际应用中的例子:

var arr1 = [10, 8, 15, 6, 4, 20, 21];
console.log(arr1.filter(value => value >= 10));

运行后,我们将数组中大于等于10的元素过滤了出来,运行结果是在控制台打印了一个Array:

Array(4)
0: 10
1: 15
2: 20
3: 21
length: 4

同例子的js代码为:

var arr1 = [10, 8, 15, 6, 4, 20, 21];
console.log(arr1.filter(function (value) { return value >= 10; }));

其=>表达式最好的用处,就是代替了js中的this关键字。 

先看一个传统试用this关键字的js代码:

function getName(name: string) {
    this.name = name;
    setInterval(function () {
        console.log("Name Is :" + this.name);
    }, 1000);
}
var xingming = new getName("hehe");

运行代码,控制台每一秒就会显示一句:

Name Is :

你会发现,传进去的参数不见了。

PS:这段代码在谷歌浏览器中可以跑,但是在IE11及Edge浏览器中,则会提示:Expected ')'。

同样的需求,我们再用=>表达式来写:

function getName(name: string) {
    this.name = name;
    setInterval(() => {
        console.log("Name Is :" + this.name);
    }, 1000);
}
var xingming = new getName("hehe");

这时你会发现变量回来了,控制台正常的输出了:

Name Is : hehe

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值