代碼 var nums=nums[fs]; 存在嚴重邏輯錯誤:用未定義的 nums 索引 fs 來初始化 nums 自身,導致 nums 變為 undefined,後續賦值失效。
var nums = nums[fs]; // nums 未定義 → ReferenceError 或 nums=undefined
for (var j = 0; j <= gfd; j++) {
a = num * j; // num 未定義
nums[j] = a; // nums 非陣列/undefined → TypeError
alert("a" + a);
}
// 1. 先聲明陣列
var nums = []; // 或 new Array()
// 2. 確保所有變量已定義
var num = 10; // 示例值
var fs = 0; // 示例值
var gfd = 5; // 示例值
// 3. 迴圈賦值
for (var j = 0; j <= gfd; j++) {
var a = num * j; // 用 var/let 限制作用域
nums[j] = a;
console.log("a = " + a); // 建議用 console.log 替代 alert
}
console.log(nums); // [0, 10, 20, 30, 40, 50]
var nums = [] 必須先於任何 nums[...] 訪問。num、fs、gfd 使用前需賦值。JavaScript 變量提升特性僅提升聲明(var nums),不提升賦值(= []),所以 var nums = nums[fs] 相當於 var nums; nums = nums[fs],此時 nums 為 undefined,undefined[fs] 拋錯。