Как определить переменную в массиве? - PullRequest
1 голос
/ 09 января 2012

Создание моего первого настоящего приложения с JS: Black Jack. Мне просто интересно, почему мои j, q, k и a var возвращаются как undefined.

window.onload = init;
var cards = [2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,j,j,j,j,q,q,q,q,k,k,k,k,a,a,a,a];
var j = 10;
var q = 10;
var k = 10;
var a = 11;
function init() {
    var button = document.getElementById("doIt");
    button.onclick = processIt;
}
function processIt() {
    var cpu1 = document.getElementById("cpu1");
    cpu1.innerHTML = cards[37];
}

Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

4 голосов
/ 09 января 2012

Потому что в момент, когда вы объявляете cards, эти переменные (или, скорее, их значения) все еще не определены. Изменить порядок объявлений.

var j = 10;
var q = 10;
var k = 10;
var a = 11;
var cards = [2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,j,j,j,j,q,q,q,q,k,k,k,k,a,a,a,a];
3 голосов
/ 09 января 2012

Вы определяете их после их использования ... Вы должны определять переменные до того, как будете их использовать, а не после.

1 голос
/ 09 января 2012

В javascript объявления обрабатываются первыми, но присваивание происходит по порядку. Ваш код эффективен:

var cards, j, q, k, a;

// Here, all variables exist but none have a value
// When cards is assigned an array, the values of j, q, k and a 
// are still undefined.
cards = [2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,
         8,9,9,9,9,10,10,10,10,j,j,j,j,q,q,q,q,k,k,k,k,a,a,a,a];

// Now the rest are given values
j = 10;
q = 10;
k = 10;
a = 11;
...