【问题标题】:let keyword always show not defined error in typescript让关键字总是在打字稿中显示未定义的错误
【发布时间】: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


【解决方案1】:

好的。当我在 Chrome devTool 上调试时,定义了变量....问题是我正在使用 VSCode 进行调试。

请注意,let 关键字会导致 VSCode 调试器上出现未定义的变量。

【讨论】:

    猜你喜欢
    • 2018-04-20
    • 2017-12-22
    • 1970-01-01
    • 2018-06-05
    • 2022-08-16
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    • 2021-08-30
    相关资源
    最近更新 更多