Как сделать массив внутри функции можно использовать на всей странице

У меня есть массив, который создается внутри такой функции:

function easy() {
 var colors = ["white", "red", "orange", "yellow", "green", "blue", "purple", "gray", "white", "red", "orange", "yellow", "green", "blue", "purple", "gray"];
}

Я вызываю эту функцию через onclick на переключателе, но когда я это сделаю позже:

colors.sort(function() {return 0.5 - Math.random()});

это не работает, я думаю, это может быть потому, что цвета - это всего лишь локальный массив. Есть ли способ заставить его работать throuhttp://stackoverflow.com/posts/21558099/editghout всей страницы?

4 ответа

Если вы объявляете свой массив вне функции, его область действия глобальна:

var colors;
function easy() {
 colors = ["white", "red", "orange", "yellow", "green", "blue", "purple", "gray", "white", "red", "orange", "yellow", "green", "blue", "purple", "gray"];
}
easy(); // Here colors is defined;


var colors;
function easy() {
 colors = ["white", "red", "orange", "yellow", "green", "blue", "purple", "gray", "white", "red", "orange", "yellow", "green", "blue", "purple", "gray"];
};
easy();
colors.sort(function() {return 0.5 - Math.random()});


Вы хотите его инкапсулировать?

var easy = {
 colors: ["white", "red", "orange", "yellow", "green", "blue", "purple", "gray", "white", "red", "orange", "yellow", "green", "blue", "purple", "gray"],
 hello: function() { alert("Hello") }
}

alert( easy.colors.sort(function() {return 0.5 - Math.random()}) );
easy.hello();


Вероятно, вам нужно будет использовать эту переменную в нескольких программах. Поместите его во внешний файл, php добавьте его через include. Рассмотрим его как глобальные переменные.

licensed under cc by-sa 3.0 with attribution.