为什么我的变量说它未定义?

时间:2018-01-21 21:17:21

标签: javascript css this

当您点击“添加列表”按钮时,我不确定为什么我的'name'变量未定义。

这是疑似问题代码:

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;
        }

这是codepen: https://codepen.io/vaughnick/pen/YYBoeq

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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