我的Javascript代码中的Bug:范围问题或逻辑问题
Bug in my Javascript Code: Scope Issue or Logic Issue?
我的蛇游戏到处留下痕迹,而不是正确移动:http://jaminweb.com/Snake.html(用方向键移动)
我想知道这是否可能是范围的问题。
相关代码为
var temp = this.body[0].clone();
// ....
this.body[0].translate(this.dx, this.dy);
for (var i = 1, j = this.body.length; i < j; ++i)
{
var lastBB = temp.getBBox();
var thisBB = this.body[i].getBBox();
temp = this.body[i].clone();
this.body[i].translate(lastBB.x-thisBB.x,lastBB.y-thisBB.y);
}
我在想,不,
temp = this.body[i].clone();
内部的for
循环创建一个新的变量或Javascript看外面,看看是否已经有一个?我认为是后者。
temp = this.body[i].clone();
创建一个新对象,因此您创建的新对象不会被翻译。
正如@MikeW在评论中指出的那样,JavaScript中没有for
块作用域;作用域可以是全局的,也可以局限于一个函数。因此,代码中的temp
在for
循环内部和外部都是相同的变量。
this变量总是指向定义它的上下文。
function Constructor1
{
this.x = 1; // points to the objects instantiated by Constructor1
}
var a = new Constructor1;
a.x = 1; // `this` points to a
var b = new Constructor1;
b.x = 1; // `this` points to b
function func()
{
return this; // points to the calling function, returns itself
}
func() will return the function itself
Javascript使用函数作用域而不是块作用域
相关文章:
- setInterval游戏循环的范围问题
- Javascript innerHTML超出范围的问题
- AngularJs避免范围界定问题
- firefox中的Javascript事件范围问题
- AngularJS指令范围约束问题重复出现
- jQuery“this”范围问题
- 可以't在quizz页面范围问题上用最终分数更新变量
- JavaScript 函数变量范围问题
- 奇怪的可变范围问题
- JavaScript 中变量范围的问题
- 主干.js(具有 Require.js)变量/范围访问问题
- 递归承诺调用 - 内存范围变量问题
- JQuery 范围滑块步进更改问题
- AngularJS中的范围问题
- 如何在 JavaScript for D3.js 中解决这样的范围问题
- 我可以设置这个吗'某事'在该服务中动态创建的嵌套对象中的服务?(可能是范围问题)
- Highcharts列范围工具提示问题
- 在函数中提示未定义返回.(问题)范围
- 访问Javascript's变量:涉及Javascript, JQuery和PHP/MySQL的问题&范围
- JavaScript 闭包问题..范围