当控制台说“无法读取未定义的属性'长度”时,它意味着什么

时间:2017-04-30 03:46:56

标签: javascript arrays

所以我试图创建一个从卡片中抽取卡片的功能,但每当我运行它时,控制台都会给我一条错误信息:“无法读取未定义的属性'长度'”。为什么函数不能计算我的数组中有多少条目?

  function draw() {
  var suitsdraw = suits[Math.floor(Math.random()*suits.length)];
  var suits = ["Hearts","Clovers","Spades","Diamonds"];
  var numberdraw = number[Math.floor(Math.random()*number.length)];
  var number = ["A","2","3","4","5","6","7","8","9","10","J","Q","K"];
  console.log(suitsdraw);
  console.log(numberdraw);

}
draw();

1 个答案:

答案 0 :(得分:3)

错误消息显示suitsundefined。为什么会这样?

因为您在定义之前尝试访问suits。交换前两行以消除错误。

var suits = ["Hearts", "Clovers", "Spades", "Diamonds"];
var suitsdraw = suits[Math.floor(Math.random() * suits.length)];

但是,你会得到同样的错误,但在第3行。看看有什么问题?

交换第3和第4行,你很高兴。

var number = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"];
var numberdraw = number[Math.floor(Math.random() * number.length)];

PS。使用有意义的变量名并使用camelCase约定。