如何在数组中定义一个var?

Posted

技术标签:

【中文标题】如何在数组中定义一个var?【英文标题】:How to define a var in an array? 【发布时间】:2012-02-05 17:30:58 【问题描述】:

用 JS 构建我的第一个真正的应用程序:Black Jack。我只是想知道为什么我的jqka 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];

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

因为在您声明 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];

【讨论】:

严格来说,这与声明无关,因为它们发生在任何代码执行之前,它与分配有关。在分配给 cards 的过程中使用变量时,它们的值是未定义的。【参考方案2】:

您是在使用它们之后定义它们...您必须在使用它们之前定义变量,而不是之后。

【讨论】:

【参考方案3】:

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;

【讨论】:

我试过了,它返回 undefined: var a; 卡片 = [2,2,...,a,a] a = 11; 有人介意解释为什么会这样,在我的书或谷歌中找不到很好的解释。 以上解释了它发生的原因。为避免未定义,请在使用变量之前为其赋值(即将对 cards 的赋值移动到对 j、q、ka)。

以上是关于如何在数组中定义一个var?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PHP 中定义一个空对象

JavaScript 如何定义一个二维数组

javaScript中数组的定义方法

c++如何定义布尔型数组使其初始值为true?

没有 var 或 breakable:在数组遍历中遇到谓词时如何“中断”?

如何在车把循环数组中使用 lang var?