我在大型课程中有以下陈述:
array.map(seq => this.mFunction(seq));
此文件将在tsc命令的帮助下编译为:
array.map(function (seq) { return _this.mFunction(seq); });
好吧,看起来不错...但是,为什么呢:
array.map(seq => { this.mFunction(seq); });
编译为:
array.map(function (seq) { _this.mFunction(seq); });
我实际上在一个项目中遇到问题,该项目的第一种书写方式尚可,但第二种使网页以多种方式中断(我正在使用Angular)...我一直以为它们是完全一样的。
这是从我的tsconfig:
"module": "es2015",
"moduleResolution": "node",
"target": "es5"
如果您的lambda主体未用大括号括起来,则该主体被视为要返回其值的表达式,因此TypeScript添加一个return
关键字。如果lambda主体用大括号括起来,则该主体被视为要执行的语句块,并且您有责任包括任何必要的return
关键字。
第一个版本,一个单线箭头函数,由于没有在函数主体周围使用{
和}
,因此具有隐式返回。
因此,第二个版本必须为array.map(seq => { return this.mFunction(seq); });
,以等同于第一个版本。