JS新手求教:两种数组实现方案哪种更优?
两种JS购物列表实现代码的优劣对比
我是JS新手,正在学习相关课程。老师给出了一种实现代码,我自己想出的方案我认为更理想——我使用了push()方法,还在alert中用了模板字符串(Template literal)来避免字符串拼接。想请教哪种代码更优?
老师的解决方案
const item1 = prompt('Item 1?'); const item2 = prompt('Item2?'); const item3 = prompt('Item3?'); const myArray = [item1, item2, item3]; alert("My shopping list is:" + myArray);
我的解决方案
let shoppingList = []; shoppingList.push(prompt('Item 1?')); shoppingList.push(prompt('Item 2?')); shoppingList.push(prompt('Item 3?')); alert(`My shopping list is: ${shoppingList}`);
代码优劣分析
两种代码实现的功能完全一致,但各有特点:
老师的代码:
- 用
const声明所有变量,符合不可变变量的最佳实践(数组初始化后未修改引用,const的使用合理) - 步骤拆分清晰,先逐个收集输入再组装数组,对刚入门的学习者来说可读性更强,能直观看到每个变量的作用
- 用
+做字符串拼接,这里和模板字符串效果一致,因为数组转字符串默认会用逗号分隔元素
- 用
你的代码:
- 用
push()动态构建数组,更贴近“动态添加元素”的思维,如果后续需要扩展成收集更多项(比如用循环批量添加),修改起来更方便 - 模板字符串的写法比字符串拼接更简洁直观,这是现代JS推荐的写法,尤其在处理复杂字符串组合时优势更明显
- 这里用
let声明数组是合理的,但其实可以改成const——因为push只是修改数组的内容,并没有改变变量指向的数组引用,const同样适用
- 用
总结
两种写法都没问题,但你的代码更符合现代JS的编码风格,尤其是模板字符串的使用非常值得肯定。如果要进一步优化,可以把数组声明改为const,让代码更严谨:
const shoppingList = []; shoppingList.push(prompt('Item 1?')); shoppingList.push(prompt('Item 2?')); shoppingList.push(prompt('Item 3?')); alert(`My shopping list is: ${shoppingList}`);
内容的提问来源于stack exchange,提问作者Sean Ryder
相关产品推荐
相关产品推荐

