能否使用函数表达式与For循环动态生成指定内容的JS数组?
问题原因
你的现有写法存在两个核心逻辑错误:
- 你将函数直接定义在
winX的数组初始化语法中,没有主动执行该函数,此时winX的第一个元素是未执行的函数本身,不是你要的X字符串 - 函数内部直接操作并返回外层
winX变量,引用逻辑混乱,即使手动执行函数,最终得到的数组结构也会包含多余的函数元素,不符合预期
实现方案
1. 函数表达式+循环实现(符合你的需求)
可以用立即执行函数表达式(IIFE) 实现,动态读取cells_in_line变量生成对应长度的数组:
const cells_in_line = 3; // 可自定义该变量值动态调整数组长度 let winX = (function () { // 函数内部新建空数组操作,避免污染外层变量 const result = []; for (let index = 0; index < cells_in_line; index++) { result.push('X'); } return result; })();
执行后winX的值就是你需要的['X', 'X', 'X']。
2. 更简洁的内置API实现
如果不需要强制用循环写法,用数组的fill方法一行就能实现相同效果:
const cells_in_line = 3; let winX = new Array(cells_in_line).fill('X');
内容的提问来源于stack exchange,提问作者m3.b
相关产品推荐
相关产品推荐

