Javascript JS:为什么不是';此变量是否可用于其他函数?

Javascript JS:为什么不是';此变量是否可用于其他函数?,javascript,variables,undefined,Javascript,Variables,Undefined,我正在尝试制作画布动画: var context; var meter; var pin; function init() { var meter = new Image(); var pin = new Image(); var context = document.getElementById('canvas').getContext('2d'); meter.src = 'background.png'; pin.src = 'needle.png

我正在尝试制作画布动画:

var context;
var meter;
var pin;

function init() {
    var meter = new Image();
    var pin = new Image();
    var context = document.getElementById('canvas').getContext('2d');
    meter.src = 'background.png';
    pin.src = 'needle.png';
    context.drawImage(meter,0,0);
    context.translate(275,297);
    context.save();
    setTimeout(startup,500);
}

function startup() {
    var r=2;    // set rpm here.
    var i=r*36-27;
    var angleInRadians = 3.14159265 * i/180;  //converting degree to radian                
    context.rotate(angleInRadians); //rotating by angle
    context.drawImage(pin,-250,-3);  //adjusting pin center at meter center
    context.restore();
}
您可以在以下位置看到脚本:

对于firebug,我得到一个错误,说上下文未定义,我认为这很奇怪

谢谢

亲切问候,,
Marius

可能是因为您在init()函数中使用了“var”,这使得新的“context”变量成为该函数的局部变量,而不是向全局变量添加定义。因此,只要在init()函数中将“var”放在“context”之前,它就可以工作了。您也应该将var放在meter和pin前面。

您在init()函数中将上下文定义为局部变量,因此全局范围的上下文变量始终为null。 更改行:

var context = document.getElementById('canvas').getContext('2d');

context = document.getElementById('canvas').getContext('2d');
您正在这里声明另一个局部变量
context
,它仅在
init
中有效。“外部”
上下文
保持其
未定义的值
。删除
变量
,它将分配给外部
上下文

var context = document.getElementById('canvas').getContext('2d');