我的代码存在问题。我似乎得到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';
有人可以看到我出错的地方吗?
答案 0 :(得分:0)
Javascript具有功能范围,您可以在此处找到更多详细信息 - variable scope。
通过更改大括号的位置,您实际上正在更改myFunction
功能的范围。当您在myFunction
之后移动大括号时,它将成为drawImage
的内部函数并获取对变量red
的访问权限。