如何用“let”和“const”替换此代码中的“var”关键字?
Posted
技术标签:
【中文标题】如何用“let”和“const”替换此代码中的“var”关键字?【英文标题】:How do I replace the "var" keywords in this code with "let" and "const"? 【发布时间】:2019-08-31 00:36:51 【问题描述】:如果我将“var”关键字替换为“let”或“const”,则会收到 userChoice is not defined 错误。
我已经尝试用“let”或“const”替换所有内容。我还将 userChoice 放入一个函数中,并在需要时调用该函数。我还尝试将整个 while 循环放入一个函数中。这些程序与“var”完美配合。
我用“let”和“const”得到的最远的是这个/当我尝试将它放入while循环时它停止工作:
const arrayList = [];
let userChoice = prompt('What would you like to do?');
// Array list is empty array
if (userChoice === "new")
let newTodo = prompt('Enter a new todo');
arrayList.push(newTodo);
else if (userChoice === "list")
console.log(arrayList);
工作代码:
var arrayList = [];
var userChoice = prompt('What would you like to do?');
// Array list is empty array
while (userChoice !== "quit")
if (userChoice === "new")
var newTodo = prompt('Enter a new todo');
arrayList.push(newTodo);
else if (userChoice === "list")
console.log(arrayList);
var userChoice = prompt('What would you like to do?');
除非您说“退出”,否则我希望此程序会不断提示。您输入“new”来添加新的待办事项,输入“list”来列出所有待办事项。
【问题讨论】:
请向我们展示您尝试过的替代品。 在倒数第二行,您重新声明了 userChoice。这是笔误吗? 【参考方案1】:问题是该代码声明了两次userChoice
,第二次var
是不必要的:
var arrayList = [];
var userChoice = prompt('What would you like to do?');
// Array list is empty array
while (userChoice !== "quit")
if (userChoice === "new")
var newTodo = prompt('Enter a new todo');
arrayList.push(newTodo);
else if (userChoice === "list")
console.log(arrayList);
var userChoice = prompt('What would you like to do?');
// ^^^---------------------------------------------------- here
var
无关紧要,因为 var
具有函数作用域(或全局作用域,如果在函数外部使用)并且多个声明被忽略,但它与 let
很重要,因为 let
是 block-scoped,因此在块内声明一个新的userChoice
会影响外部的。 (let
的多个声明是同一范围内的错误,因为这样做没有意义,并且允许这样做会很复杂。)
只需删除第二个var
并将其他var
s 替换为let
(或者您可以将const
用于arrayList
和newTodo
,除非未显示的代码将新数组分配给@987654336 @稍后):
const arrayList = []; // Or let
let userChoice = prompt('What would you like to do?');
// Array list is empty array
while (userChoice !== "quit")
if (userChoice === "new")
const newTodo = prompt('Enter a new todo'); // Or let if you prefer
arrayList.push(newTodo);
else if (userChoice === "list")
console.log(arrayList);
userChoice = prompt('What would you like to do?');
【讨论】:
以上是关于如何用“let”和“const”替换此代码中的“var”关键字?的主要内容,如果未能解决你的问题,请参考以下文章