Ka *_*ech 5 javascript typescript1.8
我正在做一个关于由Typescript进行词法范围处理的教程,我遇到过一个我以前从未见过的函数.这看起来像是forEach语句中的空函数.在打字稿中它看起来像这样:
fns.forEach(fn=>fn());
Run Code Online (Sandbox Code Playgroud)
在javascript中它看起来像:
fns.forEach(function (fn) { return fn(); });
Run Code Online (Sandbox Code Playgroud)
我从来没有见过这样的功能.谁能解释一下这是如何工作的?具体来说,fn => fn()实际执行的是什么.参考下面的代码,它是执行fns.push还是for循环?如果它是For循环,则没有参考,所以它是如何知道的?
以下是完整代码:
打字稿:
var fns = [];
for(var i=0;i<5;i+=1){
fns.push(function(){
console.log(i);
})
}
fns.forEach(fn=>fn());
Run Code Online (Sandbox Code Playgroud)
JavaScript的
var fns = [];
for (var i = 0; i < 5; i += 1) {
fns.push(function () {
console.log(i);
});
}
fns.forEach(function (fn) { return fn(); });
Run Code Online (Sandbox Code Playgroud)
看看这个例子:
var method = a => a+1;
Run Code Online (Sandbox Code Playgroud)
method是一个保存函数引用的 var。
a是输入参数。
a+1是方法主体和返回类型。
Typescript 会将其转换为:
var method = function (a) { return a + 1; };
Run Code Online (Sandbox Code Playgroud)
查看typescript Playground 示例,您会很快理解这个概念。
在您的示例中, fns 是一个函数数组。
dofns.forEach(fn=>fn());表示执行 fns 数组中的每个方法。
| 归档时间: |
|
| 查看次数: |
115 次 |
| 最近记录: |