javascript - Typescript/JavaScript forEach

标签 javascript typescript1.8

我正在做一个关于 Typescript 的词法范围处理的教程,我遇到了一个我以前从未见过的函数的使用。这看起来像 forEach 语句中的空函数。在 typescript 中它看起来像这样:

fns.forEach(fn=>fn());

在 javascript 中它看起来像:

fns.forEach(function (fn) { return fn(); });

我从未见过像这样使用的函数。有人可以解释这是如何工作的吗?具体来说, fn=>fn() 实际执行的是什么。引用下面的代码,是执行fns.push还是for循环?如果是 For 循环,则没有对此的引用,那么它是如何知道的?

完整代码如下:

typescript :

var fns = [];
for(var i=0;i<5;i+=1){
    fns.push(function(){
        console.log(i);
    })
}
fns.forEach(fn=>fn());

JavaScript

var fns = [];
for (var i = 0; i < 5; i += 1) {
    fns.push(function () {
        console.log(i);
    });
}
fns.forEach(function (fn) { return fn(); });

最佳答案

看看这个例子:

var method = a => a+1;

method 是一个包含函数引用的 var。
a 是输入参数。
a+1 是方法主体和返回类型。

Typescript 会将其转换为:

var method = function (a) { return a + 1; };

查看 typescript playground example你会很快理解这个概念。

在您的示例中,fns 是一个函数数组。

执行 fns.forEach(fn=>fn()); 意味着执行 fns 数组中的每个方法。

关于javascript - Typescript/JavaScript forEach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38196045/

相关文章:

javascript - amCharts 中标签的点击事件

javascript - Div 大于表格单元格

javascript - 值不返回

javascript - 按 z 索引定位幻灯片并分配类别

angular - 带分页的 PrimeNG 数据表复选框选择

node.js - TypeScript:如何为已安装的 npm 包定义自定义类型?

angularjs - DefinitelyTyped: 'export = _;' 是什么意思

javascript - Bootstrap DateTimePicker 和 jQuery 问题

inheritance - TypeScript:静态属性和继承

debugging - VSCode Chrome 调试器未在 Typescript 文件中停止