Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 数组语法错误新手_Javascript - Fatal编程技术网

Javascript 数组语法错误新手

Javascript 数组语法错误新手,javascript,Javascript,我在这个错误中迷失了方向。我正在尝试编写一个函数,并在该函数中编写一个数组。在外部js文件中。这将是一个随机的图像加载函数,但我一直得到一个数组错误,无法找出原因 function randImg(){ var imgs = new Array(); img[0]="banner1.png"; img[1]="banner2.png"; img[2]="banner3.png"; var maxium = img.length; } 我在var im

我在这个错误中迷失了方向。我正在尝试编写一个函数,并在该函数中编写一个数组。在外部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”的新代码,它让我感觉不舒服。它加载了好的,但它只打印变量中的文本,而不是实际的文件!?所以在运行时,应该说“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]
}

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

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]
}

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

另外,请注意,在Javascript中,添加不是函数第一行的
var
语句没有太大意义。这是因为吊装。基本上,Javascript会将您的
var
移动到第一行,将变量设置为
undefine
。这可能会影响程序的工作方式,也可能不会影响程序的工作方式,因此最好在函数顶部添加所有
var
s。Javascript具有函数作用域,而不是块作用域

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

如果您只是添加到数组的末尾(就像您正在做的那样),则可以使用
.push()

或者更好的方法是,只需使用
[]
初始化空数组,或者使用
[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)];
}

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

另外,请注意,在Javascript中,添加不是函数第一行的
var
语句没有太大意义。这是因为吊装。基本上,Javascript会将您的
var
移动到第一行,将变量设置为
undefine
。这可能会影响程序的工作方式,也可能不会影响程序的工作方式,因此最好在函数顶部添加所有
var
s。Javascript具有函数作用域,而不是块作用域

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

如果您只是添加到数组的末尾(就像您正在做的那样),则可以使用
.push()

或者更好的方法是,只需使用
[]
初始化空数组,或者使用
[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)];
}

我没有看到
var-img
在任何地方。我应该指出,我只在外部js文件上得到这个错误,但如果在内部使用它,我没有这个错误。我没有看到
var-img
在任何地方。我应该指出,我只在外部js文件上得到这个错误,但如果在内部使用它,我没有这个错误error您为什么要将函数文本指定给变量而不是普通函数定义?@icktoofay-因为我不知道OP想在哪里使用函数,所以它更灵活。正式禁止在非功能块(如if)中使用函数声明。但是,所有浏览器都允许使用这些函数,并以不同的方式对其进行解释。是否有任何理由将函数文字指定给变量而不是普通的函数定义?@icktoofay-因为我不知道OP希望在哪里使用该函数,所以它更灵活。正式禁止在非功能块(如if)中使用函数声明。然而,所有浏览器都允许它们,并以不同的方式对它们进行解释。