当结果来自oneArray
时,我尝试显示单独的.png文件;当来自随机数的结果来自twoArray
时,我试图显示另一个.png文件。图片将显示它们的稀有性。但是,当我复制function displayImage()
位时,它什么都没有?还有另外一种方法吗?
function myFunction() {
var luck = ['1', '2', '3', '4', '5', '6', '7', '8', '9'],
oneArray = ["tree", "dog", "cat", "wood"];
twoArray = ["tiger", "dot", "tame", "buzz"];
lucknumber = Math.floor((Math.random() * luck.length));
if (lucknumber < 8) {
function displayImage() {
var num = Math.floor(Math.random() * oneArray.length);
window.canvas.src = oneArray[num];
}
displayImage();
} else {
function displayImage() {
var num = Math.floor(Math.random() * twoArray.length);
window.canvas.src = twoArray[num];
};
displayImage();
}
}
myFunction();
谢谢 - 我知道可能还有很多其他问题与此相符,但不适用于我目前在D中的情景:
答案 0 :(得分:0)
function
不会在代码中存在的行中创建。 JavaScript会扫描您的代码,并且会在运行任何代码之前立即创建function
。有两种方法可以解决这个问题。
改为将function
指定为变量:
var displayImage = function() {
var num = Math.floor(Math.random() * oneArray.length);
window.canvas.src = oneArray[num];
}
当您指定为变量时,声明(变量名称)是在顶部创建的唯一内容。函数本身未创建。
但这不是最干净的解决方案。就个人而言,我会重构并将两者都变成一个兼容两者的函数:
function displayImage(array) {
var num = Math.floor(Math.random() * array.length);
window.canvas.src = array[num];
}
将它在选择的数组中传递给相同的函数