lambda 函数警告中的阴影变量

Shadow variable in warning in lambda function

我在 Typescript 项目上使用 tslint,我经常收到有关 lamdba 函数中影子变量的警告。

这是一个例子:

const page = this.currentDocument.pages.find(page => page.pageNumber === pageNumber);

这里的警告是关于 page 变量的。

我已经更改了它,因为我发现它的风格很糟糕,并且在此处重用页面变量名称令人困惑,但我想知道这是否会产生错误或者这只是一个 style/comprehension 问题 在这些情况下。我知道影子变量在其他情况下经常会产生错误。

有人举个例子说明这里具体会出现什么问题吗?

不是真的没有。隐藏变量会导致错误的唯一方法是您不想隐藏变量。一个非常人为的例子:

const factors = [ 1, 2, 3, 4 ]
const factor = 5
const factorsMultiplied = factors.map(factor => factor * factor) 
// [ 1, 4, 9, 16 ] but expected [ 5, 10, 15, 20 ]

只要您确定不需要访问您在闭包中隐藏的变量,您就不会 运行 出现任何奇怪的行为。

如果您想在某些情况下禁用规则,您可以这样做:

/*tslint:disable:no-shadowed-variable*/
const page = this.currentDocument.pages.find(page => page.pageNumber === pageNumber);
/*tslint:enable:no-shadowed-variable*/