JS:为什么这个变量不能用于其他功能?

Mik*_*Rev 0 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';
    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();
}
Run Code Online (Sandbox Code Playgroud)

您可以在http://www.kingoslo.com/instruments/上看到该脚本

使用firebug我得到错误,说上下文未定义,我认为这很奇怪.

谢谢.

亲切的问候,马吕斯

Sea*_*ean 9

这可能是因为你在init()函数中使用了"var",这使得一个新的 "context"变量在该函数的本地变量而不是向全局函数添加定义.所以只需在init()函数中的"context"之前删除"var",它应该可以工作.你应该将var放在仪表前面和针脚上.

  • +1.这被称为[范围](http://en.wikipedia.org/wiki/Scope_%28programming%29) (2认同)