JavaScript函数报错Uncaught ReferenceError: a is not defined求助排查
问题原因与修正方案
两次尝试的错误点
第一次尝试
- 违背题目核心要求:题目明确要求函数接收外部传入的两个数组,但你直接在函数内部硬编码了
a和b的值,导致外部传入的参数完全无效。 - 虽然这次调用
goldenMiddle()不会直接触发a is not defined,但核心逻辑完全偏离了题目需求。
第二次尝试(报错的直接原因)
调用函数时写了goldenMiddle(a[1,6,8], b[4,6,2]),这里的a和b在全局环境中从未声明过,JavaScript找不到这两个变量,因此抛出Uncaught ReferenceError: a is not defined。传递数组应该直接写数组字面量(比如[1,6,8]),而非a[xxx]这种错误写法。
两次尝试的共同逻辑错误
- 函数内部直接覆盖参数
a和b的值,要么硬编码,要么设为空数组,完全忽略了外部传入的输入。 - 当
a是空数组时,a[1]会返回undefined,导致最终返回的数组不符合预期。 var newResult = c.push(resultA) + c.push(resultB);这行代码完全多余,push()返回的是数组新长度,这个变量也未被使用,属于无效代码。
修正后的代码
function goldenMiddle(a, b) { // 直接取两个传入数组的索引1元素,组成新数组返回 return [a[1], b[1]]; } // 调用时传入符合要求的数组字面量 console.log(goldenMiddle([4,6,2], [1,6,8])); // 输出 [6, 6]
内容的提问来源于stack exchange,提问作者terry ikporo
相关产品推荐
相关产品推荐

