函数外的Javascript函数数据
Javascript function data outside of a function
我正在尝试创建一个简单的javascript游戏,我遇到了一个问题,访问函数的数据之外。
这段代码运行得很好。
window.onload = function() {
var FPS = 30;
var ground = new myObject();
var twoground = new myObject();
setInterval(function() {
clear();
draw();
ground.draw(0, 325);
twoground.draw(125,325);
alert(ground.xval);
}, 1000/FPS);
};
function myObject(){
this.draw = function drawground(groundx, groundy){
this.xval=groundx+125;
this.yval = groundy;
var canvas = document.getElementById('canvas')
var context = canvas.getContext('2d');
var img=new Image()
img.src="ground.png"
img.onload = function() {
context.drawImage(img,groundx,groundy)}
}
};
每次间隔运行时,上面的代码都会向浏览器发出125警报,但这是我能做到的唯一方法,例如,如果我执行以下操作。
window.onload = function() {
var FPS = 30;
var ground = new myObject();
var twoground = new myObject();
setInterval(function() {
clear();
draw();
ground.draw(0, 325);
twoground.draw(125,325);
myalert();
}, 1000/FPS);
};
function myalert()
{
alert(ground.xval);
}
function myObject(){
this.draw = function drawground(groundx, groundy){
this.xval=groundx+125;
this.yval = groundy;
var canvas = document.getElementById('canvas')
var context = canvas.getContext('2d');
var img=new Image()
img.src="ground.png"
img.onload = function() {
context.drawImage(img,groundx,groundy)}
}
};
我所期望的是相同的事情,因为它应该调用myalert,它只显示一个警报,在相同的间隔,但它没有。我觉得我错过了javascript函数工作方式的一些东西。
当您使用var
关键字在函数内声明变量时,该变量将放在函数的局部作用域中。要使其在函数外部可访问,可以通过省略var
关键字将其置于全局作用域中。
但是,您可能还需要考虑重构代码,通过将全局变量作为自定义对象的属性或作为函数参数传递来避免全局变量。
JavaScript是静态作用域,而不是动态作用域。当您在第二个示例中提到ground
时,您指的是一个名为ground
的全局变量,而不是像在第一个示例中那样,指的是局部变量ground
。传递给setInterval()
的函数从它的父函数中捕获局部变量ground
,当alert()
被求值时,它仍然在作用域中。
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- 如何将firebase数据传递到函数中
- 为什么不'我们在javascript中使用函数参数的数据类型
- Meteor Router数据函数被调用两次
- onChange 函数更改表中显示的数据
- 如何降低此函数的复杂性,该函数根据数据类型进行回调
- 函数jquery.html()不提供数据属性集值
- javascript函数将数据添加到屏幕,但随后被另一个函数覆盖
- 是否保证传递给 always 函数的回调将在函数(数据)回调完成其工作后调用
- get 函数数据报告空信息
- JavaScript函数数据处理
- 我想将函数数据发送到使用 javascript 中的按钮设计的边框中
- fnGetPosition不是一个函数-数据表
- 函数外的Javascript函数数据
- 使用函数数据动态加载onclick函数
- 如何将函数索引和函数数据统一为一个新函数
- 使用美元.Post方法将函数(数据)值返回给变量
- 没有函数数据绑定不能工作
- Jquery.ajax,成功:函数(数据)没有返回一个普通对象
- 未捕获的类型错误:未定义不是函数-数据表