函数或var未定义.js

时间:2017-10-06 20:20:03

标签: javascript rgba

我的代码存在问题。我似乎得到var未定义或函数未定义,取决于我放置括号的位置(显然)。我想要完成的是将一个数组转换为一个字符串,以便查看我有什么样的数据以及我应该如何显示它(直方图或其他东西)。这是代码:

function drawImage(imageObj) {
  var canvas = document.getElementById('myCanvas');
  var context = canvas.getContext('2d');
  var imageX = 10;
  var imageY = 10;
  var imageWidth = imageObj.width;
  var imageHeight = imageObj.height;

  context.drawImage(imageObj, imageX, imageY);

  var imageData = context.getImageData(imageX, imageY, imageWidth, imageHeight);
  var data = imageData.data;

  for (var i = 0, n = data.length; i < n; i += 4) {
    var red = data[i];
    var green = data[i + 1];
    var blue = data[i + 2];
    var alpha = data[i + 3];
  }
} //the brace that causes problems

function myFunction() {
  red.toString();
  document.getElementById("test").innerHTML = red;
}
// alternative position of brace?

var imageObj = new Image();

imageObj.onload = function() {
  drawImage(this);
};

imageObj.src = 'myimg.jpg';

有人可以看到我出错的地方吗?

1 个答案:

答案 0 :(得分:0)

Javascript具有功能范围,您可以在此处找到更多详细信息 - variable scope

通过更改大括号的位置,您实际上正在更改myFunction功能的范围。当您在myFunction之后移动大括号时,它将成为drawImage的内部函数并获取对变量red的访问权限。