我有代码,我循环遍历图像的所有像素,这包括2个for循环:
for (x = 1; x < img.width; x++) {
visited[x] = new Array();
for (y = 1; y < img.height; y++) {
visited[x][y] = false;
count = deepCount(img, x, y, visited, 0);
if (count > spotSize) {
spotX = x;
spotY = y;
spotSize = count;
}
}
}
此代码所有单词,直到if
语句。当我尝试获取变量x
和y
并将其值放入新变量时,它们会给出1
的值。但是,如果我console.log
if语句之前的值,它们会给出另一个数字。
似乎变量会重置为for循环中赋予它们的值,因为当我将其起始值更改为"0"
时,x
和y
都返回{{ 1}},因此我的问题是:
输入if语句时,如何将这些变量重置为初始值?
答案 0 :(得分:1)
我刚刚测试了一个类似的代码,带有2个FOR语句。工作正常,X和Y按预期更改值。
function matrix() {
var mx = "";
var xrand = Math.floor( Math.random() * 20 + 2 );
var yrand = Math.floor( Math.random() * 20 + 2 );
for (x = 1; x < xrand; x++) {
for ( y = 1; y < yrand; y++) {
mx += "[" + x + "," + y + "]";
}
mx += "\n";
}
console.log(mx);
}
matrix()
&#13;
你能确定: 1. img.width和img.height实际上产生了价值 2.访问函数不改变X,Y值 3.使用其他值而不是X或Y进行测试 4.删除除FOR和IF语句之外的所有内容,但将IF中的条件替换为if(true)之类的其他内容以便测试出来
我说在路径X和Y的某个地方被该代码中涉及的任何功能设置为给定值。