数组语法错误,新手

Array syntax error newbie

本文关键字:新手 错误 语法 数组      更新时间:2023-09-26

我在这个错误中丢失了。我试着写一个函数,并在这个函数中写一个数组。在外部js文件中。这将是一个随机的图像加载函数,但我不断得到一个错误的数组,不能找出原因。

function  randImg(){
    var imgs = new Array(); 
    img[0]="banner1.png";
    img[1]="banner2.png";
    img[2]="banner3.png";
    var maxium = img.length;
}

我在var imgs行上得到错误。什么好主意吗?

这是我的新代码调用变量"img"扔我它加载ok,但它只打印出文本在变量,而不是实际的文件!运行的时候是"banner1。png"还是"banner3。png"任何想法

function randImg(){
var banner = new Array();
banner[0] = "banner1.png";
banner[1] = "banner2.png";
banner[2] = "banner3.png";
var maxImg = banner.length;
var randNum = Math.floor(Math.random()*maxImg);
return banner[randNum];
}

用元素定义数组的更好方法:

var img = [
      "banner1.png",
      "banner2.png",
      "banner3.png",
      "banner4.png"
]

这是你可能需要的功能:

function randImg(){
    var img = [
          "banner1.png",
          "banner2.png",
          "banner3.png",
          "banner4.png"
    ]
    var maxImg = img.length;
    var randNum = Math.floor(Math.random()*maxImg)
    return img[randNum]
}

变量名应该保持一致。您创建了新的Array imgs(局部变量),但是您向添加了img(默认为全局变量,因为您没有将其声明为局部变量)。

还需要注意的是,在Javascript中,如果var语句不是函数的第一行,那么添加它并没有太大的意义。这是因为吊装。实际上,Javascript将把var移到第一行,并将变量设置为undefine。这可能会影响程序的工作方式,也可能不会影响您认为它应该如何工作,因此最好在函数的顶部添加所有var。Javascript有函数作用域,没有块作用域。

(还要注意maximum是一个比maxium更有意义的变量名)

// This adds to the newly created array:
function  randImg(){
    var img = new Array(), // Note: img NOT imgs
        maximum; // Even if a var is below this line, Javascript hoists it here
    img[0] = "banner1.png";
    img[1] = "banner2.png";
    img[2] = "banner3.png";
    maximum = img.length; 
}

,你可以使用.push()如果你只是添加到数组的末尾(就像你所做的)

function  randImg(){
    var img = new Array(), // Note: img NOT imgs
        maximum;
    img.push("banner1.png");
    img.push("banner2.png");
    img.push("banner3.png");
    maximum = img.length;
}

function  randImg(){
    var img = new Array(), // Note: img NOT imgs
        maximum;
    img.push("banner1.png").push("banner2.png").push("banner3.png)";
    maximum = img.length;
}

或者更好的是,使用[]来初始化一个空数组,或者使用[a,b,c,...]来初始化一个有元素的数组。另外,为什么使用var两次?

function  randImg(){
    var img = ["banner1.png","banner2.png","banner3.png"], // note comma
        maximum = img.length;
}

最后,为了不辜负函数的名称

var randImg = function() {
    var img = ["banner1.png","banner2.png","banner3.png"];
    return img[Math.floor(Math.random()*img.length)];
}

…下面是randImg()

的工作示例