【问题标题】:Why is my variable saying it is undefined? [duplicate]为什么我的变量说它未定义? [复制]
【发布时间】:2018-01-21 21:17:20
【问题描述】:

我不确定为什么单击“添加列表”按钮时我的“名称”变量未定义。

这是可疑的问题代码:

function addList() {
            let name = prompt("What would you like your list to be called?");
            console.log(name);
            if (name != null) {
                console.log(name);
                let name = new list(`${name}`, "[]");
                const markup = `
                    <div id="${name}">
                    ${this.name} List:
                    <br>
                    ${this.items}
                    <br>
                    ${this.button}
                    <br>
                    </div>
                    `;
                document.getElementById("Shopping").append(markup);

            }
            return;
        }

这是代码笔: https://codepen.io/vaughnick/pen/YYBoeq

感谢您在我的旅程中为我提供的任何见解/教程 :)

【问题讨论】:

  • 哪个变量?告诉我们您在哪里看到问题;在 codepen 中没有任何明显的事情发生。
  • 笔无法重现您所描述的问题。建议您在问题本身中添加minimal reproducible example,这样您的问题对未来的用户仍然有用。
  • 对不起,name 变量未定义。
  • 我将删除此内容,否则我会在知道发生了什么后立即使其对其他人有用。谢谢

标签: javascript css this


【解决方案1】:

那是因为您有两个名为 name 的变量。由于let 是块范围变量,您所指的name 在下一行中声明。这会导致您的错误。您可以更改第二个变量名称或删除 let 以避免创建具有相同名称的新变量。

【讨论】:

    【解决方案2】:

    let 是作用域的,通过在 if {} 块中重新定义它,它会创建一个新的临时变量。因此,在它创建它之前,它是未定义的。见https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-24
      • 1970-01-01
      • 2023-03-29
      • 2015-08-08
      相关资源
      最近更新 更多