【发布时间】:2020-11-02 21:27:54
【问题描述】:
我有以下部分代码:
if (this.holdReasonList.length == 1 || this.holdReasonList == undefined || this.holdReasonList.length == 0) {
return this._cciDataService.getHoldReasonDropList()
.pipe(takeUntil(this.unsubscribe))
.subscribe((res) => {
if (res.Success) {
let defaultList = [];
res.Data.forEach((reason: string) => {
defaultList.push(reason.trim());
})
在我调用此行后,我总是收到defaultList 的未定义错误:
let defaultList = [];
我不明白为什么 defaultList 没有定义,因为我明确声明了它。
提前感谢您的帮助!
更新:
感谢您的建议!由于我尝试将let defaultList=[] 放在整个订阅块之外,它现在可以工作了。
但原因尚不清楚。我设置断点并在控制台中输入let defaultList = [],它也返回未定义。请看下面的截图:
我想我什至不需要考虑defaultList 的使用位置,defualtList 在声明之后是未定义的。我什至没有机会使用它的价值......
【问题讨论】:
-
您是否尝试将
let defaultList = [];移到res.success捕获之外? -
你的意思是返回值,你认为是
defaultList,是undefined?如果是这样,那么这是 stackoverflow.com/questions/14220321/… 的副本 -
let语句声明了一个块范围的本地,所以defaultList只能在if块内访问,如果你尝试访问块外它会抛出未定义的错误 -
你在哪里使用这个 defaultList ?如果您在订阅之外使用此变量,请将其保留在订阅之外。
-
没错,OP提供的代码应该可以正常工作@DurgeshPal
标签: javascript angular typescript let