TypeScript/JavaScript forEach调用

pit*_*las 10 typescript

我无法理解这段代码:

stringsArray.forEach(s => {
    for (var name in validators) {
        console.log('"' + s + '" ' +
            (validators[name].isAcceptable(s) ?
                ' matches ' : ' doesnt match ') + name);
    }
});
Run Code Online (Sandbox Code Playgroud)

特别是,这s => { ...部分是神秘的.看起来s被分配给每个循环中数组中的下一个字符串.但是这=>部分含义是什么?我认为这与lambdas有关,但我并不关注.

Jos*_*eam 16

是的,它是一个lambda(例如,类似于ECMAScript6和Ruby,以及其他一些语言.)

Array.prototype.forEach有三个参数,element, index, array所以s只是用于的参数名称element.

这就像在常规的ECMAScript5中写这个:

stringsArray.forEach(function(s) {
    for (var name in validators) {
        console.log('"' + s + '" ' +
            (validators[name].isAcceptable(s) ?
                ' matches ' : ' doesnt match ') + name);
    }
});
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,你没有显示整个代码,所以我假设validators它只是一个普通的对象{}.

您提供的示例的语法实际上与ES6语法相同.

TypeScript手册中查看此示例:

例