You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 18:22:23