JavaScript 在 for 循环中返回 var
JavaScript returning var in for loop
我正在尝试理解实现画布/上下文对象的代码。如果该对象的子画面在画布上以鼠标按钮按下事件提供的指定坐标集(据我所知)遇到,则此代码返回该对象。以下代码是否创建对象数组?
var selObj = getObjectByPixel(mx,my);
和
function getObjectByPixel(x,y) {
gctx.clearRect(0,0,MaxX,MaxY);
//alert(levelData.world['ExtraBlockTNT_1'].name);
for (var objname in levelData.world) {
var obj = levelData.world[objname];
var sprd = spriteData[obj.definition];
if(!sprd) continue;
var tr = transform(obj.x, obj.y, sprd.data.width, sprd.data.height);
gctx.save();
gctx.translate(tr.x,tr.y);
gctx.rotate(obj.angle);
gctx.fillRect(-tr.w/2, -tr.h/2, tr.w, tr.h);
gctx.restore();
//console.info(x,y);
var imageData = gctx.getImageData(x, y, 1, 1);
if (imageData.data[3] > 0) {
return obj;
}
}
return null;
}
在我看来,如果遇到像素数据,循环中的第一个对象将返回。如果是这种情况,循环是结束(这就是我假设会发生的情况)还是继续返回对象并将它们存储在selObj
我对这段代码感到非常困惑,但该应用程序运行没有错误,所以我一定没有完全理解它。
谢谢。
它不返回数组。它返回一个对象,请参阅:return obj;
。您只能从函数返回一次。
p.s. 如果这段代码的作者要返回一个数组,他可能会称之为:getObjectsByPixel(注意 s)。
return
总是在输入函数时结束执行并返回到堆栈。
所以这意味着它只返回一个对象。 为了返回数组,函数必须首先创建数组,然后在循环完成后返回它。
我终于弄清楚了块的动态。循环只返回一个obj
(无论如何我都知道)。逻辑是,对于画布上的每个对象子画面,都会在叠加画布中创建一个不可见的填充矩形,直到鼠标单击坐标在其中一个矩形的边界内。然后返回从中生成该矩形的对象。
相关文章:
- 控制台返回var不是't定义,但它是
- 如何从回调函数返回 var?OOP 属性
- winJS 从函数未定义返回 var
- 从另一个函数返回 var 是 JS
- 类型运算符和实例运算符为同一 var 返回不同的信息
- JavaScript 在 for 循环中返回 var
- 使用 var t=!0 / var t=!1 表示真/假有多安全?他们是否总是返回真正的布尔值真/假
- if 语句并返回 var === 其他东西
- Ajax返回带有服务器响应的var
- Why for var在数组中返回一个字符串索引
- 什么是函数中的“返回(var > -1)”
- NodeJS-将命令行输出存储为var,并通过res.send()将其返回到客户端
- 另一个var中的setDate方法返回不同的值
- 为什么var c=“;a“||"b”;返回c=“;a“;并且var c=“0”;a“&&"
- 如何让我的javascript var在html段落中返回
- 返回带有node的原始html(只将html放入var中)
- 从一个模型到另一个模型的引用var在Backbone中返回默认值
- 模式返回var &&var = = = & # 39;一些# 39;在javascript
- For var在对象中返回方法和属性
- Javascript返回和三元操作符与var,可能的