我无法理解这段代码:
stringsArray.forEach(s => {
for (var name in validators) {
console.log('"' + s + '" ' +
(validators[name].isAcceptable(s) ?
' matches ' : ' doesnt match ') + name);
}
});
特别是s => { ...
部分是神秘的。看起来s被分配给每个循环中数组中的下一个字符串。但是=>
部分是什么意思?我认为这与lambdas有关,但我没有关注。
答案 0 :(得分:17)
是的,它是一个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);
}
});
在上面的示例中,您没有显示整个代码,因此我认为validators
只是一个普通对象{}
。
您提供的示例的语法实际上与ES6语法相同。
查看此示例